Infor CRM Merge Contact- Handling Account Product Contacts

When performing a merge of contacts in the Infor CRM web client it handles merging a lot of child records off the contact. One area that is not touched is the account product area where a contact is defined. if you are merging a contact associated to an account product, the merged contact remains associated to the account product rather than being updated to the contact it was merged with.

This posts shows how to add this feature.

The first thing to do is expand out the entity model in the Application Architect.

Go to the Contact entity’s Rules.

Double click the MergeContact rule.

On the Post Execute task you can see all of the secondary steps to handle moving the child records.

Go ahead and click add to add a new post-step
Infor CRM Add new Post Step
Name the post something unique. In my case I called it “MergeContact_FXMoveAssets” I didn’t follow the Infor naming convention in case they ever decide to add this step by default, having a duplicate step name will cause problems.
InforCRM Post Step

You will now see your step. Go ahead and click the Edit Code Snippet link.

The first thing you will need to do is add an assembly reference. Unfortunately the assembly we need is not located anywhere convenient. It is called Sage.SalesLogix.Services.PotentialMatch.dll I copied the dll from the Bin folder of the web portal to my base build path’s assemblies sub-folder. Then I added an assembly reference in my custom step:
Infor CRM add Assembly Reference

Now with that assembly we can add the code that will use that service which is passed into our event to get the Source Contact Id. From there we use a SQL statement to update all of the account products that have that contact associated and then update them with the new contact, which is also passed in:

			Sage.SalesLogix.Services.PotentialMatch.MergeProvider mp = mergeProvider as Sage.SalesLogix.Services.PotentialMatch.MergeProvider;			
			string sourceContactId = mp.Source.EntityId;	
			string targetContactId = mp.Target.EntityId;	
			string dupId = string.Empty;			
			if(contact.Id.ToString()!=sourceContactId) dupId=sourceContactId;
			if(contact.Id.ToString()!=targetContactId) dupId=targetContactId;
			Sage.Platform.Data.IDataService datasvc = Sage.Platform.Application.ApplicationContext.Current.Services.Get<Sage.Platform.Data.IDataService>();
		    using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(datasvc.GetConnectionString()))
		        using (System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand("update accountproduct set contactid = '" + contact.Id.ToString() + "' where contactid='" + dupId + "'", conn))
		            int o = cmd.ExecuteNonQuery();						

            result = true;

Kris Halsrud

Kris Halsrud is a Senior Analyst / Developer for Customer FX Corporation.

Submit a Comment

Your email address will not be published. Required fields are marked *

Subscribe To Our Newsletter

Join our mailing list to receive the latest Infor CRM (Saleslogix) and Creatio (bpm'online) news and product updates!

You have Successfully Subscribed!