“The Cloud” is one of the most talked about buzzwords in the IT Industry, and while most CRM vendors are addressing this trend with a mobile application of some sort, these applications usually don’t include any complex data entry or reporting visualizations. Here’s a look at how to quickly and safely expose your data from the cloud using Microsoft Dynamics CRM 2011 and Windows Azure.
Using Microsoft Dynamics CRM 2011 and Windows Azure, we can easily allow data entry/modification, as well as reporting via a mobile device, such as a Windows Phone. For this specific example, we’re going to assume the Dynamics installation is an On-Premise installation, authenticated via Active Directory Windows Authentication – but this works just as well with an online or IFD based installation.
Windows Azure service provides the interface between your mobile device and your corporate network.
Azure Database is your SQL Server in the cloud, storing all domain tables and any transactional data you would like to enter/report on. Keep tables simple and make them easy to link back to Dynamics CRM (preferably by using the same GUIDs that CRM uses for its primary and foreign keys). Any stored procedures that aggregate or process data for mobile app viewing can be stored here as well.
It is recommended that you use a separate queue table to store records modified by the mobile app. This ensures that these uncommitted CRM transactions are separate from the already committed CRM data, and also doubles as an audit log for any data coming through the mobile application.
Azure Web Role
Windows Azure will host your .NET WCF (Windows Communications Foundation) Service (the service that communicates with the mobile device) A REST/JSON based service will work the most efficiently, but a SOAP/XML based service will also work. Your service will perform data access by communicating with the Azure database. Using a framework such as The Entity Framework or LINQ to SQL is recommended for data access, as no SQL has to be written (it is generated from within the frameworks).
Azure Identity (optional)
Azure Identity provides authentication against your current corporate Active Directory implementation using ADFS. Azure also provides access to other Identity providers, such as Windows Live, Google, and Facebook (if Active Directory authentication is not needed). Authentication can also be done manually through the WCF service via any custom authentication mechanisms.
SSIS (SQL Server Integration Services)
SSIS is an important piece in this architecture – it provides the integration between your corporate network and Azure. Any domain data and transactional data you want to report on should be transferred to their appropriate tables in the Azure DB. The SSIS job should be scheduled on a regular basis in order to keep data fresh on the mobile app.
Due to the fact that we’re talking about an AD authenticated, on-premise Dynamics CRM deployment within a corporate network, we will need a way to pull data from Azure back into CRM.
For pull based scenarios (AD Authenticated on premise, non-internet accessible CRM deployments), this is the interface between CRM and Azure. The polling application is a simple .NET based application that runs on a frequently scheduled interval. Its only job is to query any tables in Azure that have transactions entered via the mobile app and need to be committed into CRM. When using The Entity Framework for Azure DB access and early bound generated entities for CRM, the custom coding required is minimal (only any custom business logic not already implemented in CRM, and basic interaction with database & CRM contexts to read and write data into respective systems are required.)
Note: If your organization has a cloud accessible CRM system (Office 365, On-Premise IFD deployments), then the polling application is unnecessary. The same logic can be accomplished in the Azure WCF service, giving you a near instantaneous response back into your CRM system.
The UI component is up to you & your organization, based on requirements/business stories. While Windows Phone provides a robust development platform, and is familiar to any .NET based IT shop, iOS and Android based apps can interact with your WCF service just as easily. For really stunning UI elements and visualizations, Telerik controls are recommended and are very easy to use. Some great examples can be seen here.
While developing your application, keep in mind that your end user will be on a mobile device – which has a fraction of the processing power and bandwidth of a workstation.
- Keep processing on the server (Azure or Corporate Network) side.
- Keep data size low from Azure to Mobile device by utilizing JSON / REST based services.
- Ensure end user has a free flowing, lag free experience by pre-loading and locally caching data (if possible.)
I hope that the architecture laid out here will give you a great starting point for what you can accomplish and provide for your end users when your CRM data is in the cloud.
This is just one example of how Dynamics CRM can be enhanced to provide more customized data entry and modification options. If you have questions or comments, feel free to leave a comment, or contact us.