Full CRM Deployment in Azure – Part II – Expose CRM to the Internet

In my previous post, I shared some of the chanllenges we faced as part of the deployment of a full CRM Infrastructure in Azure. In this post, I will focus on how we exposed the CRM application on the internet to meet our business requirements.

Context

Before I talk about the options and our decision making process, it is important to talk about some of the key requirements that we have for our application.

  • Dynamics CRM is the heart of the platform, containing client, membership info as well as open requests (you can think of these as cases)
  • Customer information is used/displayed through multiple portals (Adxstudio and custom portals)
  • Customer information is also used/displayed in custom mobile applications (not the Dynamics CRM apps), available in the Apple Store and in Google’s Play Store.
  • Internal support agents need to have access to CRM from anywhere in the world at all times (they have accounts in CRM)

One of the design decision that was made is to have a web service that the mobile applications can communicate with. That way, all our mobile applications use the same Data Access Layer to get to and manipulate Dynamics CRM data. The following diagram shows a simplified version of our architecture.

image

WIth that in mind, our portals and mobile applications have to be able to communicate with Dynamics CRM. To make that happen, we considered two options.

Internet Facing Deployment

That was our initial idea. We wanted to go with the classic IFD deployment for our Azure hosted Dynamics CRM installation. That would include the usual Claim-based authentication, ADFS configuration and a bit of advaned network configuration in the cloud service. In Azure, such a deployment isn’t very different from what we do for on premise-type installations. The main difference resides in how and where some of the configuration is done (certificates registration, DNS configuration done through Azure config using new portal or PowerShell commands).

Internet Facing Web-Sites hosted in Azure VMs 

The other option here, is to simply use the Azure VM End Points and Load Balanced Sets features to expose the CRM application on the web (internal or public). The big picture consists of having the CRM front-end role installed on multiple servers in our cloud service, create a load balanced set that exposes the CRM Web sites through an accessible URL (can be public or internal depending on your setup and requirements). The challenges here are authentication and possibly security (and they are not discussed in detail here, but happy to elaborate questsions are posted!).

image

What we did, how we did it and what we learnt

Now we are getting to the cool part. We decided to go with the second option, mainly because of expertise, ease of support and ease of deployment. It is much easier to find people who have basic knowledge of endpoints, load-balanced web site, than people who know CRM and IFD.

Untimately in our context, we needed to have a CRM that is accesible for our CRM users from anywhere in the world to our users. It also needed to be accesible from our Portals and custom web services all hosted in Azure.

Important to keep in mind that if you want to use the Dynamics CRM Mobile applications, ADFS is the required authentication mecanism so that factor into your decision making process.

Here are the main steps to getting to our goal.

  1. VMs are created, the Dynamics CRM Front-End Role is installed our two servers
  2. Validate CRM is accessible from both VMs independently using their local URLs (e.g. http://crmapp1/orgname and http://crmapp2/orgname 
  3. If all of that works, then it’s time to configure your VM end points and load balanced set

image

Looking at the Load Balanced Set above, we have created a web application available at “DNS Name” + Public Port. When the website at that URL is requested, it will be redirected to one of the CRM Virtual Machines on the port 80 which is the configuration you see with the VMs that are members of this Load Balanced Set.

image

When you reach your CRM, you will be prompted by the browser for user credentials (AD). There are multiple ways to enable single sign on but not discussed here. 

One resource that has been key for us in the process of making this happen is the Cloud Ranger blog and videos!

It’s been a fun experience. We love Azure more and more! To get more information and details on how you can build a full CRM infrastructure in Azure, or any information about your CRM needs and implementations, reach out to us!

Advertisements

Synchronize CRM Online Data with Skyvia

I just discovered an interesting tool, thought I’d share a quick review.

Skyvia is a cloud data integration solution. It has connectors to a few data sources and is able to move data from one cloud based source to another based on configuration and schedule. Oh I forgot to mention, it’s FREE J

As a test, I configured it to connect to my Dynamics CRM Online sandbox organization and my Zoho CRM organization:

Once my connections are created and validated, I create and design a package to transfer contacts from Dynamics CRM Online to Zoho CRM:

As you can see on the screenshot above, Skyvia gives you the ability to create synchronization tasks (1) and also to schedule the execution your packages (2). The package can also be ran manually.

The tool can be very handy especially if you have simple synchronization needs between CRM and other systems. The supported data sources are Dynamics CRM Online, MySQL, PostgreSQL, SQL Server, Salesforce.com, Zoho CRM, Sugar CRM. Obviously such a tool does not replace the need for more complete and mature data integration products such as Scribe and SSIS connectors, but it provides an easy way to achieve simple data integration between multiple cloud based systems. Works perfectly for me demos! And it’s free (at least for now).

Start your CRM Development in Azure!

I attended a presentation by Microsoft TFS ALM MVP Wes MacDonald on Windows Azure  a couple of weeks ago. If you have some level of MSDN Subscription, Microsoft is giving away free $$$ for Windows Azure services.

Knowing that, I decided to use some of my free $$$ to do some CRM development in  Azure. The idea is to create a Virtual machine and just get a feel of the overall experience. To kick things off, we need to activate our Azure Benefits by logging onto our MSDN subscriber account. Navigate to “My Account” and you will see the list of Subscription Services you get based on your level. Click on “Activate Windows Azure” and go thought the activation process. It takes a few minutes.

After that, the rest of the steps are pretty standard. You need to create a VM. There are a couple of options when it comes to doing that.

  1. You prepare your own VM using HyperV and run SysPrep. When that step is completed, you can upload your VM to Azure and boot it…
  2. You can pick from a Template Virtual Machine. In my case, I selected Windows Server 2012 and SQL Server 2012 SP1 (saves me some time)

Once you have done all the steps to create your VM (with Template), you get a RDP file that enables you to connect to your Virtual Machine in Azure. From that point on, it’s standard CRM installation. If you are used to building CRM VMs for development on a local laptop or workstations, typical steps are installing Active Directory, promoting your machine to Domain Controller and installing CRM. It took me about an hour tops to complete the installation (without the development tools i.e. Visual Studio).

For the price and if you are always going to have internet access, it’s much easier to use an Azure Virtual machine for your development. Here are my arguments for doing it:

  • Powerful servers
  • Quick install, fast and easy access (you get to select the data center where you want to VMs to be… Select something close to your location, East US for myself)
  • Possibility to have a separate server for each installation components (SQL, CRM, AD, SharePoint etc…) at a very low cost which you can hardly do on VMs on your local machine
  • Low cost (good discount for MSDN account holders, plus you are only charged when your VMs are running)
  • Azure UI very simple and intuitive
  • Easy integration with Visual Studio 2012 and 2013
  • No need to maintain your own infrastructure and deal with network, hardware and software maintenance

After trying this, I’m leaning towards using moving all my personal development activities to Azure. The cost is low and controllable and it gives me flexibility when it comes to building a better server infrastructure for my CRM Development which I could never have if I work on my laptop (as powerful as it is). Also, it’s worth noting that I am only focusing on infrastructure here but Windows Azure enables you to do much more (Web hosting, storage/backup, mobile, media etc.). If you are looking for a cloud solution, you should take a hard look at Windows Azure!

Cheers