We have just released our latest version of the Dynamics GP to Dynamics CRM template which you can read about here. Out of the box, this template supports On Premise deployments of CRM 2011, but what about CRM Online? Below you will find the steps needed to deploy this template for Dynamics CRM Online, and some of the things to watch out for.
The biggest difference between the deployments of this template for On Premise versus Online is the use of the INTEGRATION user and the impersonation feature. On Premise deployments allow you to use the impersonation feature of Dynamics CRM, which lets you make changes in Dynamics CRM as if you were logged in as some other user. Using impersonation, your Scribe jobs make changes as if they were logged in as the user named INTEGRATION, a system user that is built into Dynamics CRM. This user is allowed to make changes to fields that normally would be locked, such as total fields on a submitted order. Without this user, our jobs would be unable to make these changes. Dynamics CRM Online does not allow us to use impersonation, so we need a different way to enable the Scribe jobs to update the protected fields. There is functionality built into Dynamics CRM Online that lets you enable a user so that they can edit these protected fields. You change the user through the API and therefore through a Scribe job. So, what needs to be done first is create a DTS that uses CRM Online on both the source and target, pulling from the SystemUser object and updating the SystemUser object. There is a field on that object named isintegrationuser, you must set this to 1 on the user you wish to use as your integration user. You can make an easy lookup link on systemuserid = systemuserid.
The implication of deploying the integration with Dynamics CRM Online is that you cannot use the built in system user called INTEGRATION and you must use a real user, which requires a full CAL. The user can still be utilized use in CRM, but the changes made by that user will not be sent to GP, as configured in the integration template.
When you create your DTS file, I would highly recommend using the Custom Query option on the source to filter down to the one user account you wish to change. I did this by adding a filter on the internalemailaddress field for the SystemUser object, which contains the Live ID you had to use to create this CRM user. That way, you are not changing a user to become the integration user when you do not intend to. Once this has been done, run the DTS to update the user and you now have a system user with the ability to update those protected fields.
Now that we have our integration user defined, it's time to use it. You need to change all of the connections to Dynamics CRM in the template DTS Files to use this special user, with the exception of one DTS file. The CustomerToCRM.dts file has two connections to Dynamics CRM. You will change one of them to use this special user. For the other connection, labeled "non-INTEGRATION CRM", set it to connect to Dynamics CRM as some other user who does not have the "isintegrationuser" property set to 1.
The last thing you must do is change the CRM Publisher settings to ignore changes from this integration user. This is done within step 4 of the publisher settings, and we recommend doing this at the Entity Level as opposed to the publisher level. By only ignoring at the entity level, you can add your own custom published entities and allow that user to have their changes sent down via Scribe.
Aside from the modifications to the process noted in this blog post, you can use the rest of the template implementations steps in the template help. Once you have made the changes outlined in this post, you can follow the step by step directions provided with the template to deploy and test the integration between Dynamics GP and Dynamics CRM Online. You can do your testing and initial sync according to the doc and have your integration up and running in short order.