Dynamics CRM
Over the past few weeks, I have been working with the Microsoft Dynamics CRM software which our client will use as the backbone for their new vehicle inventory management system. The Dynamics software offers a great deal of support right out-of-the-box for managing enterprise-level data, as well as offering a variety of configurations and customizations to make it fit the user needs. Some of these include role-based security for defining access privileges, custom workflows for modeling user interactions with key entities, such as accounts and contacts, reporting services built upon Microsoft SRS and client extensions by way of custom entities, forms and modules.
With all the features offered within Dynamics, it is necessary to point out one short-coming we have run into during development with this product. All entities, whether system-defined or custom, have a single form associated with them, which the user interacts with to perform basic CRUD operations. With this one-to-one relationship between entity and form, there is the limitation that a form cannot display data from second or subsequent entities; it can only show data for a main entity. In other words, a developer is not able to “easily” add the Account name to a Contact page, in a reliable fashion. There is a notion of referencing entities on a parent form to gather related data, but what if the user navigated directly to the Contact form, instead of navigating by way of the Account form?
The answer lies in the ability to call out to web services from within the Dynamics client itself. This is done by adding javascript code to the form’s OnLoad event. The code will be responsible for calling a web service and populating the desired fields in the client with the results returned from the service. This allows for the developer to create web services that will retrieve whatever data they need directly from the CRM database, and present the related data in a main entity’s form. This technique has been very useful in presenting a Dynamics form which represents data from the main entity and one or more related entities.