Update PerCon links?

Is there a way to update per con links to the correct per con throughout the system?
I have users who have created multiple person contacts for the same person, linked them to different entities throughout the system, and now we are running into trouble when trying to consolidate them.
At the very least, if I had a way to safely remove existing links, that would work too

What I do is highlight the bad PerConID, simply type the correct PerConID and then hit tab. Then save.

Once the bad PerCon has no links, you can delete it.

I’ve attached a short video. I hope I answered your question!
Recording #49.mp4 (1.6 MB)


Thanks Lacey, that’s what I was finding too. I;m working on a program to basically do this automatically, since the links are spread out over quotes, ship to’s, etc. Seems like a program that should be included but oh well!

@Aaron_Moreng for the initial cleanup you may be able to use Person contact and person contact global link via dmt and run a delete.

thanks jeff, I’m not sure how I would be able to safely remove wrong/replace the right one though on quotes, etc. via dMT. I’m def more comfortable using code to do this, but it takes a bit more discovery

Definitely, gotta find those golden BO’s. Maybe the contact or person objects? Or PerCon?

I had good luck using the QuoteSvc actually to do the lifting on the quote side. That’s primarly where I need to remove the links from

Had a similar issue in E9 where one of our CRMs actually typed the contact name into the contact on the quote, which created a new contact against the customer, resulting in multiple percon records, and customer contacts on the customer with the same name!

As soon as that customer contact has a quote, order, or a case (which if I recall doesn’t give a referential integrity error if you try to delete the customer contact) it takes a fair bit to fix. At least in E9 there is a separate table that stored the contacts on the case and you also need to determine which is the primary contact as well.

1 Like

That is exactly the situation I’m in. It’s been going on for years and that’s why i need a utility to fix.

I didn’t have a utility to fix it if you get my drift. The amount of time I spent I probably should have. I did have a dashboard the highlighted the duplicates though. I’d share, but I don’t have it any more, sorry.

It gets even harder when the orders are closed. We had BPMs on our Quotes as well so I had to do a lot of it at night disabling the BPMs and reenabling once I had had cleaned up a number.

I started with a script that identified the duplicate contacts and went from there, looking at quotes, orders, Cases, case contacts. and PO’s.

A good place to start, would be a trace and try to delete a cotnact. Once again if I recall, I did a sql profiler to see what tables were hit.

The other thing I recall was that always confused me was the relationship between the perconlnk table and the hdcontact (I think). In one instance it the foreign key is the sysrowid and another is the perconlnkid. Don’t take my word for it though, It has been a while.

I have never been a real fan of the whole Pecon, Perconlnk thing. I think the implementation of contacts is much better in eFrontOffice/ITSM to be honest.

I’ve been able to safely remove/replace the correct contact via the rest api, but I’ll probably end up just making an application inside epicor to call the adapters to do the same thing. I agree about the crm in epicor. It’s kind of a burning pile of garbage compared to the rest of the modules and I wish we didn’t rely so heavily on it. At this point we have been using for like 5 years though so there’s not a lot to be done about it other than fixing what I can. I think some of the issues were definitely caused by E9, but some are just regular old user created problems. Maybe I’ll share the application when it’s done, since I’m obviously not the first to need it!!

Our problem got fixed. The culprit left the company :slight_smile:

Hmm sounds like the problem might crop up again where I am now…

I’m thinking that this would be a good feature request.

1 Like

Aaron, are you aware of the user-run conversion program “UpdatePerConLnk” (run sequence 560 in If so, have you already tried using that conversion and were dissatisfied with the results?

Hey Scott, I’ve seen it but not entirely sure what it actually does. Do you know? My impression was that it’s a cleanup routine kind of like refresh part/bin allocations where it just changes/refreshes the display values without doing any actual data change but I could be wrong

Unfortunately, I do not know, because we have not used the conversion program here. We also have multiple PerCon records linked to multiple accounts, so we’ve been debating how to approach fixing the issues. Your post reminded me to contact Support, and I’ve just done that, to request any documentation that might go at least a little bit beyond the rather ambiguous description of the conversion program. I’m hoping that it’s more like the contact import program than a cleanup routine. I can let you know what I learn, presuming that something is provided.


I was so curious what the conversion actually did I created a ticket and here is the answer:

"Bev* 2019-07-25 20:29:47

Good afternoon, what it does is fix PerCon records that could be corrupted. Supplier, SupplierPP, Employee, Workforce, ShipTo Contacts, Buyer, PREmployee, and Customer Contacts should be linked to a PerCon (Person Contact), those links are done using a PerConLnk record (Person Contact Link) that is linked to the PerCon record; the conversion creates the PerCon record and its PerConLnk records if they don’t exist in order to fix corrupted data."

1 Like