Category Archives: CRM General

General information, hints and tips for Dynamics CRM 2013.

Business Analysis Exam – ECBA



Apologies once more for the lack of posts in this blog in recent years.  After Ebola, I stayed on at the World Health Organisation in the role of a Business Analyst and so no longer regularly work with Dynamics CRM at present.

This post then is about business analysis, something relevant for any work that seeks to bring about a change to a business and so potentially of interest to those working with Dynamics CRM projects.

In an earlier post, I covered Microsoft’s Sure Step methodology, but here I’m going to concentrate on the ECBAthe Entry Certificate in Business Analysis from the IIBA – the International Institute of Business Analysis (based in Toronto).  This is the entry level qualification ideal for those wishing to start a career in business analysis or for those, like me, that have done the work for years but now seeking some certification to validate that experience.

Beyond ECBA there are two higher levels of certification also available, CCBA (Certification of Capability in Business Analysis) and CBAP (Certified Business Analysis Professional).  There is also a “Thought Leader” certification CBATL.

Details of all four levels and how to become a member of IIBA are available from their website: –

ECBA seems to be a fairly new or under-utilised certification (I suspect that most people might head straight for CCBA) as I wasn’t able to find much information online about preparing for the exam so I hope this blog post will fill that vacuum since I took and passed ECBA in January 2018.


Business analysts enable change in an organisation by studying needs, formalising them as requirements and then recommending solutions.  It’s a critical part of any project and poor business analysis is a sure-fire way to project failure and unhappy customers.

The IIBA provides a methodology to guide the correct execution of business analysis work and its synthesised into the BABOK – the Business Analysis Body of Knowledge (currently at version 3.0 and published in a big orange “guidebook”).  All exams are based around the BABOK.


Preparing for ECBA

Regardless of whether you are starting out in your career as a business analyst or bringing years of wizened experience, you are going to need to spend some quality time with the BABOK guide (currently at v3.0).  The ECBA is taken exclusively from this material and so you will need to become a member of the IIBA (by paying a yearly subscription fee) and then either downloading or ordering a paper copy of the book.

Everything you need is in the book and you will have to develop good familiarity with the terminology, the methodology and the definitions that BABOK employs.

My recommended approach is: –

  • Read through the book in its entirety once. Concentrate particularly on the introduction to ensure that you know, after the first reading, the definition of stakeholders and concepts and how BABOK approaches business analysis (i.e.  the difference between a knowledge area, a technique, a competency).  You should know the requirement categorisations.
  • Have a look at the preparation material on the IIBA site itself, they give a percentage breakdown of the number of questions to expect from each area. You will see that for ECBA the stress is mainly on definitions
  • Go through the six work areas in detail and make your own notes, at the end you should be able to look at a big chart listing each work area and the tasks within it and speak about each to describe what it does. You can use a diagram like the one below.  For instance, you should know the difference between validating and verifying requirements or the difference between the “Define Change Strategy” task and the “Assess Requirement Changes” task.  I have included a link to my notes at the end of this article.


  • Reread the definitions and the introduction section of the book so that you understand the definition of a requirement, an assumption, know the responsibilities of each of the roles (What does a sponsor do? What jobs fall to the business analyst?) and can talk about them to a friend that tests you.
  • Read through the competencies and the techniques once, there are fewer direct questions on these in the ECBA but questions will reference them via the work areas so you need to understand the terms and have a basic familiarity with the different approaches to elicitation and modelling that a business analyst can apply.
  • You can now attempt some practice questions. There’s a small set of six questions available on the IIBA site via the Certification section and these will give you a flavour of what to expect.  Beyond that I didn’t find any other free practice material, only paid for question sets and most of them were for CCBA and CBAP.  Personally, I didn’t buy any question sets, I just developed my familiarity with the BABOK guide to the level described above and I believe that is enough for the ECBA exam.
  • Pay exam entry fees via the IIBA website (more details in the next section) and schedule your online proctored exam with the provider. When I did the test, the provider was PSI ( and you will be guided through creating an account on their site.

Cost of ECBA

Costs for the exam are available on the IIBA website and I won’t include figures here which are likely to get out of date but the cost breaks down as follows: –

  • Yearly IIBA membership.
  • Application fee for exam.
  • Exam fee.

After passing you will have the option to find a local chapter of the IIBA and they may also charge a (normally much more modest) membership fee for access to business analysis events in your area.

Format of ECBA

ECBA is an “online proctored” exam meaning that you will take the test from your own machine via a web browser maximised to full screen while an invigilator monitors your desktop and your webcam to ensure fairness.  The exam authority (PSI) should provide a utility to check that the machine on which you wish to take the exam meets minimum standards and you should check this BEFORE paying to the sit the exam!

I’d then recommend logging in 15 minutes ahead of your exam slot (you can start up to 15 minutes early than your scheduled time) to complete the pre-exam checks.  The invigilator will guide you through these via a chat session: –

  • Make sure that you are in a room with no one else.
  • Make sure that you are working on a clean, empty desk with nothing within arms’ reach.
  • Make sure that there are no whiteboards or information posters on the wall which might contain information to help you in the exam.
  • Make sure no one disturbs you during the exam, talking to anyone can mean a disqualification.
  • During the exam, the invigilator will ask you to keep your eyes on the screen.
  • The exam will be run in full-screen mode with your desktop monitored so that you can’t reference anything on your machine. He/she will also walk you through opening “Task Manager” and shutting off any other processes running on the machine.
  • Obviously, no screenshot or notes can be taken during the exam.

This might sound like a lot but don’t worry, the invigilator walks you through the process with competence.

Exam Day

The invigilator cannot however answer information about the exam format so you should check these on the IIBA website beforehand.  The essentials are: –

  • ECBA consists of 50 multiple-choice, single-answer questions.
  • It must be completed in 1 hour.
  • The interface will allow you to return to questions.
  • The interface will allow you to flag questions you are unsure about.
  • The interface will allow you to change your answers.
  • You will have a confirmation when you “End Test” and you will receive feedback straight away on whether you passed or failed. No indication of your score is given.
  • You will receive a confirmation email within two days from IIBA confirming the result and this also does not give you a score, but simply describes if you were above, below or at average for each topic area that the exam tests.
  • If you fail I believe you can retake up to twice in one year (a fee applies each time) before needing to wait.


Without practice questions, I did go in to the exam with a bit of trepidation.  All up I probably spent about 3 man days reading over the BABOK guide and writing my notes and this was plenty.  If you have zero background knowledge or work experience of business analysis then I think five days would be more realistic.

The ECBA is a worthwhile endeavour, it helped me align my language and terminology, taught me about some new techniques I had never used (decision modelling anyone?) and made me reflect on my own competencies and scope for improvement.

So, good luck, I hope this has proved useful and please feel free to download and use the notes I made during my ECBA preparation by clicking on the link below.



Log Parser and CRM


My apologies for the lack of posts in this blog lately.  For the past year I got roped into the Ebola outbreak crisis (and then Zika), working at the World Health Organisation in Geneva and moving away from CRM for the duration.

One of the tools I set up over the past year however did strike me as a potential useful little gadget for a CRM administrator, it’s a lightweight method using open-source components for: –

  1. Interrogating anything held in windows logs.
  2. Prepare an email detailing the logs of interest.
  3. Automatically sending that email once day.

The actual business need was to monitor the number of times PDFs were downloaded from a website and send summary statistics to the web site administrator.  So although I am querying the Windows IIS (Internet Information System) logs in this example, the principle is the same for any other log types and could therefore be extended to CRM On-Premises server (not online).

There’s details on this post explaining how Log Parser studio is used with CRM: –

But you will need to ensure that CRM is producing the logs you want by configuring it correctly as per: –

Logging Components

The solution using the following open-source components: –

  • LogParser 2.2 – an open-source tool that allows SQL-like queries to be run against windows logs and results output to a console window or a CSV file.  I believe that this tool started life as a small handy development add-on within Microsoft and proved so useful that it was made generally available.
  • LogParserStudio – an open-source tool that provides a graphical user interface for LogParser and is particularly useful for quickly prototyping, testing and validating the queries.
  • PowerShell – Windows native command language, used to dispatch an email with the LogParser results file attached.
  • Windows Schedules Task – Window’s native scheduler used to run a .BAT file which executes the LogParser command and calls PowerShell to email the results file as an attachment.

And the rest of this article is a walk-through of how to install, set up and use them.

Log Parser Installation

Here’s how to install the two open-source solution components ‘ Log Parser 2.2’ and ‘Log Parser Studio 2.0’: –

  • The LogParser 2.2 open-source tool downloaded from and the installation executable can be double-clicked to run it.
  • After installation of LogParser 2.2, it must be added to the %PATH% variable for the machine on which you wish to interrogate logs so that “logparser” becomes a recognised instruction when executed from the command line. The %PATH% variable is modified by going to  “My Computer” > “Properties” > “Advanced” > “Environment Variables” > “Path” and editing this variable to add the location to which Log Parser 2.2 has been installed – for example “C:\Program Files (x86)\Log Parser 2.2”


Figure 1: Modifying the Window %PATH% Value

  • You can test that the %PATH% variable has been successfully modified by opening a Command Prompt and typing « logparser ». The window should return a description of the tool and options for executing it.


Figure 2: Log Parser Command Line

The tool includes the ability to select which log files the tool will work with, enter and run a SQL-like query against those files to extract any data that is logged into a tabular format and produce a graph/chart of the results.

Results can be output to the tool or exported to a file.


Figure 3: Log Parser Studio

Log Parser Studio is a convenient tool for building and testing your SQL query.

Log Automation and Notification

The full solution that I had to build required that: –

  • Once a day, statistics from the event log are to be output to a CSV file.
  • That the file is emailed to recipients.

LogParser provides the interrogation of the IIS event log as follows: –

  • The logparser command required to query the IIS log and save results to a CSV file is below and this command was placed in a .bat file created on the target machine: –

logparser “SELECT TOP 20 cs-uri-stem, COUNT(*) AS Total, MAX(time-taken) AS MaxTime, AVG(time-taken) AS AvgTime, AVG(sc-bytes) AS BytesSent INTO ‘D:\LogParserStudioLOGS\Top20PDFs.CSV’ FROM D:\LOGS\W3SVC1\*.log WHERE cs-uri-stem LIKE ‘%%pdf’ GROUP BY cs-uri-stem ORDER BY Total DESC” -i:iisw3c -rtp:-1

  • This command comprises: –
    1. The SELECT statement of the data to extract. It works against the IIS log so all the fields listed at can be interrogated.  Note that not all fields are enabled for logging by Windows by default and you may need to use IIS Manager to turn on additional fields if you want to query them.
    2. An INTO statement specifying the path and file name to be created/overwritten.
    3. A FROM statement which must point to the directory that IIS uses for logging. IIS writes one log file per calendar day and the path to these is set within IIS Manager.
  • The same .bat file contains a command to execute a PowerShell file containing the script to email the CSV file output by LogParser.  You will need access to an SMTP server to control the email dispatch.  The command to run the PowerShell file is: –

powershell -noexit D:\LogParserStudioLOGS\Top20PDFs.ps1

  • The code within the PowerShell file to send an email is as follows: –

$From = “”

[string[]]$to = “”, “”

$Subject = “Website PDF Request Statistics”

$Body = “Statistics are attached for the top 20 PDFs downloaded from the website.”

$AttachFile = “D:\LogParserStudioLOGS\Top20PDFs.CSV”

$SMTP = “”

Send-MailMessage -From $from -To $to -Subject $Subject -Body $body -Attachments $AttachFile -SMTPServer $SMTP

  • This command comprises: –
    1. Variables for the FROM, TO, SUBJECT and BODY of the email.
    2. FROM is an array of strings for handling multiple recipients.
    3. The path and file name to add to the email as an attachment.
    4. The SMTP server to use for dispatch.
    5. The Send-MailMessage command which uses the variables to dispatch an email via the given SMTP server.
    6. Note that values are hard-coded within the current solution but could be read from a configuration file and/or provided to the PowerShell file as parameters for a more flexible and generic solution.
  • At this point running the .bat file will execute LogParser, output the results to a file and dispatch an email so the only element missing is automation.
  • Automation is achieved by configuring the Windows Scheduled Task to add a new task that, daily at 2am, executes the .bat


Figure 4: Windows Task Scheduler


Putting It All Together

Apologies that this blog entry is a bit of a “brain-dump” of the work performed but I hope it gives you a sense that: –

  1. You can use Log Parser to write SQL-like queries against the verbose Windows logs to quicly find and extract what you need.
  2. That Log Parser Studio is the best place to play around with this, prototype and refine your queries.
  3. That Log Parser outputs what you want CSV format.
  4. That once ready, you can transfer the instructions for executing the query and outputting CSV to a .bat file and then use some PowerShell to act on that file – for example emailing it out to interested recipients.
  5. That once the files are set up you can use Windows Scheduled Tasks to kick off the program on a timetable of your choice.

Power BI “Mash Up” of CRM and SharePoint Data

Power BI SharePoint and CRM


Next week I’ll have the honour of bluffing my way through a talk for the Geneva SharePoint User Group (SUG) about integrating Dynamics CRM and SharePoint and trying to pull off that “look like you know what you’re talking about” vibe.  To steer them away from my frightening lack of knowledge about all things SharePoint, I decided to go beyond the “out of the box” CRM integration options (of the SharePoint List Component and configuring Dynamics to use SharePoint as a document repository) and show them something a bit different – Power BI being used to link SharePoint and CRM data and report on it.

This then is a walk-through of doing just that, based around a dummy demo scenario, to give you an idea of how the data modelling of Power Pivot can be used to integrate the two data sources and provide a different take on CRM – SharePoint integration.  It assumes a background level of knowledge on how you work with Power Queries in Excel as we’ll be using: –

  1. Dynamics CRM 2013 (online)
  2. SharePoint online
  3. Excel 2013 Power Query / Power Pivot
  4. Power BI online site

 Kev Scenario

The Kev-tastic scenario for my demo was that we have groups of attendees booking to attend my talk and for each group there has a principal contact who provides some documents that need to be stored on SharePoint (maybe their booking information or travel arrangements).  The data modelling is therefore: –

  1. A custom CRM entity called Attendee Group.
  2. A link from Attendee Group to the “out of the box” standard CRM Contact entity as the “principal contact” for that group.
  3. Contacts are enabled to store documents on SharePoint e.g. we have a CRM and SharePoint that are already linked using the default functionality described on hundreds of other blogs.

Mash Up Objects

We want some reporting on how many documents have been submitted per Attendee Group, not an easy question to answer from CRM where we have no entity tracking the actual individual documents on the SharePoint side.

I set up a trial Office 365 Dynamics CRM instance for the demo and added SharePoint to it and Power BI.  I input some demo data so that Attendee Group and Contact were populated within the CRM and there were some Contact-linked documents in the SharePoint instance.

The walk-through then will deal with: –

  • How do we get the data?
  • How do we link it once we have it?
  • How do we use it once it is linked?

 1 – Getting the CRM Data

The critical thing for all of this to work is that CRM and SharePoint bounce provide web service endpoints that you can connect to from MS Excel to grab their data.  Here’s how: –

  • Within CRM go to Settings > Customisations > Developer Resources and the link at the very bottom of the screen is the ORest data service that MS Excel can talk to.  This service was originally designed for JavaScript calls coming from pages within the CRM but since the 2013 release it has been opened up so that an Office 365-authenticated client can talk to it and ask for data.

Mash Up 2

  • From within MS Excel you go to the “Power Query” tab, the “Get External Data” section of the ribbon bar and then use the “From Other Sources” drop-down icon to select the option “From OData Feed”.

Mash Up 3

  • This prompts you for the URL you found at Step 1 and you need to ensure that you specify “Organization” authentication and have entered your Office 365 credentials.

Mash Up 4

  • If all goes well, Excel will query the service and provide you with a list of its tables from which you can multi-select the ones you’re interested in copying in.  In my case it was the ContactSet data and my custom AttendeeSet entity (prefixes in the screenshot below by the CRM publisher I used to create this custom entity – avws).

Mash Up 5

  • I then performed a bit of clean up within MS Excel to ensure that I was only retrieving the columns I was interested in and that things like the Contact ID were retrieved rather than the default “Record”.  This work is performed from within the Query Editor in Excel, you use the ribbon bar to select the columns you want, click on column headings to resolve data that shows as “Record” into actual IDs and so on.

Mash Up 6

 2 – Getting the SharePoint Data

So great, at this point we have data from CRM loaded in to Excel.  The next step is to do the same thing for SharePoint.

  • Again, within Excel within the “Power Query” tab, the “Get External Data” section of the ribbon bar and the “From Other Sources” drop-down icon there is a “From SharePoint List” option which should, in theory return the lists that you need.

Mash Up 7

  • In my case this didn’t work however.  I saw the default “out of the box” SharePoint lists but not the ones that CRM had automatically created within SharePoint.
  • The workaround for this then (if you have the same problem), is not to use “From SharePoint List” but to use “From ORest Feed” again (as we did with CRM) and use the URL https://%5BYOURCHAREPOINTSITE%5D/_vti_bin/listdata.svc to then happily return all the lists which CRM has created within SharePoint for you.
  • So at this point I could now bring back the data of the SharePoint site and I can then see the lists that CRM created there including, in my case, the “Contact” list that I am interested in as it will be the location of all documents related to CRM’s Contact entity.

Mash Up 8

 3 – Linking the Data

As a quick demonstration I wanted to link the CRM data to the SharePoint data to show a query that would span information from both sources.  The key challenge was to find something to link them therefore.

I believe it was the Spring release of CRM that modified the behaviour in SharePoint so that the GUID of the CRM record now appears in the SharePoint List folder name.  If I have a contact called Fred Bloggs then his documents will be stored under Fred-Bloggs_123456789012345612, for example.  All I needed to do was to strip out this GUID from the SharePoint data and I could then use that for the link.

  • So first I had to go to my Power Queries within Excel and use the “Split” function to split the SharePoint “Path” column in to two columns based on the location of the underscore.  This isolated the GUID part.

Mash Up 10

  • This took my original “Path” column and created two that I named Path.TextPart and Path.GUIDPart.

Mash Up 9

  • I then noticed that the GUID I had split from the SharePoint source was a string of numbers only but that in my CRM data source the GUID was separated by dash characters e.g 123456789012345612 in SharePoint and 1234-5678-9012-3456-12 in CRM.  I therefore needed to add a Custom Column to the CRM source that took the GUID and stripped out the dashes with a Power Query expression.  I did this by editing the Power Query for the CRM Contact data adding a custom column and using the Power Query expression Text.Remove([ContactId], “-“)

Mash Up 11

  • At this point the data sources were in an acceptable shape to begin linking them.

Mash Up 12

  • Within MS Excel I went to the “Power Pivot” tab and the “Manage” icon.

Mash Up 13

  • I switched this in to diagram view and could see my three data sets – the Attendee Group and Contacts from CRM and the Documents from SharePoint.
  • I could then wire up these three sources to use the Contact GUID common between them.

Mash Up 14

  • I now had a basic data model spanning CRM and SharePoint data.

 4 – Using the Data

All of this would have been pretty pointless unless I had some appealing “eye candy” to show the attendees at next week’s talk.  With my data model in place I could then: –

  • Create Power View visualisations that, for example, showed me the count of documents in SharePoint per CRM Contact or, going further, a count of documents per country that the contacts were from.

Mash Up 15

  • Power View and Power Map were both used to try to “mash-up” the source information into something attractive that rammed home the point that the reports were pulling together SharePoint and CRM information in a way that would be a bit complicated to do from either CRM or SharePoint alone.

Mash Up 16

 5 – Conclusion

For about two hours of effort (including a fair amount of Googling and restarting Excel when it crashed), it was straightforward to consume SharePoint and CRM data via their ORest service endpoints and then use the GUID encoded within the SharePoint folder name to link document data back to its parent CRM record.  As a final twist, I published the Excel report up to a Power BI website and then created a custom CRM dashboard containing an IFrame that pointed at the report URL so that the data on document usage was delivered directly (and seamlessly) within CRM.

MashUp17 MashUp18

Dynamics Marketing



The introduction of Microsoft Dynamics Marketing (MDM) in Q2 2014 (code-named the “Mira” release) brings a whole new tool set with which Dynamics professionals must gain familiarity, particularly if they’re considering taking the MB2-720 Functional Application in Microsoft Dynamics Marketing exam as professional recognition of their knowledge.

MDM was created around Microsoft’s acquisition of the Marketing Pilot software in October 2012 and this article is intended as a quick overview of the product if, like me, you are coming from a solid Dynamics CRM background and want to understand where it fits in, how it is priced and technically how it integrates.  This is intended as a technical quick start therefore.

In the next few months I will prepare for exam MB2-720 and so will also post my revision notes and observations on that when my own knowledge of the tool has improved.


MDM is quite a different beast from Dynamics CRM and here are the key points to bear in mind if you’re approaching it: –

  • It is only available as an online service.  You sign up via your Office 365 portal and access it via the browser only.  It worked best in IE11 for me and some functions (such as navigating the folder structure for assets) did not render at all in, for example, Chrome.
  • The interface is very similar to Dynamics CRM with a top-level primary navigation of tiles that splits to a secondary list of options.
  • The security model is very different from CRM with a limited number of user types (Regular User, Media Buyer for instance) and a set of roles that we can add to a user and afterwards modify in a grid of permissions.
  • It is centred around a set of powerful campaign management tools that you’ll easily find articles and blog posts about.  There’s a campaign workflow designer for automated actions (screenshot below) and an in-built email editor.  These are the most popular and well-known features and includes mass mailing of your email shots and tracking of opens, click-throughs, bounces etc.  There’s also quick functionality for managing opt-on, opt-off subscription lists, getting email recipients to sign up via a web form and tracking web page visits.  Auto-scoring of leads is another crowd pleaser.MDM2

FIGURE 1: Campaign Automation flowchart in Dynamics Marketing

  • Almost all the material I found online related to these core features but if you scratch the service there is a very rich and complex set of additional functionality with which you’ll need to be familiar for exam MB2-720 and for mastery of the tool.  This includes the screens for managing assets, routing marketing material for approval with on-screen mark up and a very complex mini ERP system that tracks your Accounts Receivable, Accounts Payable, expenses, timesheets, media purchasing, purchase orders, inventory valuation etc.
  • Personally it was this ERP aspect that I found most difficult to learn since it’s a mini “Dynamics AX” for marketing and I’ve yet to find good training material that starts from the basics for someone without a rudimentary knowledge of accountancy practices!


  FIGURE 2: Mini-ERP functionality of Dynamics Marketing

  • The integration process to link CRM to MDM is relatively straight-forward and involves an initial request to Microsoft Support to turn “on” the connector.  A Service Bus in Azure is used for the exchange of data between the two systems so you’ll need an Azure account to enable your integration.
  • Like Dynamics CRM, MDM exposes an ORest service that can be consumed from Excel for the production of Power View, Power Map visualisations that you can then publish back to a Power BI website.  There’s even a Power BI “widget” for the home page (an IFrame that points at a Power BI URL) so that you can deliver your report there.
  • There’s no concept of Dashboards similar to Dynamics CRM, each user is free to add components to their home page as best suits their needs.
  • When viewing a single record, any data in a one-to-many relationship is shown at the bottom of the page in a section that you can modify by selecting the title from a drop-down list.  Confusingly some of the training material I have seen refers to this area of the tool as “Dashboards” e.g. the Contacts Dashboard to show the people who work at an Organisation.


FIGURE 3: Power BI visualisations of Dynamics Marketing Data


MDM is available at the Enterprise level of licensing, which also adds the Unified Service Desk and Parature Knowledge management services to CRM.  This level of license was announced in June 2014 and is in force at the time of writing (October 2014).  My understanding is that you therefore need, at minimum, one user with Enterprise license privilege for MDM to be activated.

You can buy an Enterprise license for a user of your existing CRM and this will cost US$200 (EUR153) per user per month or, if you are not a Dynamics CRM customer then you can also purchase MDM “stand-alone” for US$125 (EUR96) per user per month.  This underlines the important fact that MDM can be happily used without any integration to CRM whatsoever.

After these licensing costs the only additional costs you might incur are for increasing the ceiling on how many mass emails you can send per month (an extra 10,000 mailings will cost you US$50 / EUR41 per month).  By default you get 50,000 mailings per month included in your licensing.  Also, if you need to purchase extra GB for the storage needs of your solution you will pay US$9.99 / EUR8.20 per GB per month.


If you want to link your MDM and CRM instances then the high level steps are: –

  1. Have active CRM and MDM instances of course!
  2. File a request through the Office 365 Service portal that Integration Services be enabled for you.  I recommend doing this first since although Microsoft turn the requests around pretty quickly, this can take a few days.
  3. Download and run the Connector installer .msi file which will extract a CRM solution file.
  4. Install the CRM solution file in to your CRM Instance via Solutions.
  5. Set up a user with appropriate rights to act as the synchronisation agent in CRM and in Marketing note that this user does therefore consume a license.
  6. Configure an Azure Namespace as your communication bus.
  7. Perform initial synchronisation (this took about 45 minutes for me with minimal data the first time so you need to be patient).
  8. Perform some tests to ensure that the default, out of the box entities are being synchronised in near real-time.

Microsoft provides an excellent walkthrough of connector configuration in this video and there’s also a great detailed blog article of each of the connector steps listed above.  I worked from both links and the integration went surprisingly smoothly.

Once configured, entities like Accounts, Contacts and Marketing Lists are synchronised.


FIGURE 4: Welcome Page customised per user in Dynamics Marketing


A round-up of useful links then for learning the tool includes: –

Dynamics CRM & SharePoint Integration Overview

Dynamics CRM & SharePoint


In October 2014 I will be giving a talk to the Geneva SharePoint User Group about the integration options between Dynamics CRM and everyone’s favourite document management repository.  It’s a rich subject with a lot of blog posts, Microsoft white papers and general articles and so here is a condensed version if you’re looking for a quick overview of the fundamentals of integrating the two – both the “out of the box” features and the possibilities for extending the functionality with custom code.

I have included a list of references at the end to draw them in to one place and my material for the presentation (including a PowerPoint overview) is available on OneDrive here: –


First a word about the versions of SharePoint that are compatible with CRM: –

Dynamics CRM 2011 Dynamics CRM 2013
  • SharePoint Server 2010
  • SharePoint Server 2010 Online
  • SharePoint Server 2007
  • SharePoint Server 2007 Online.
  • Microsoft SharePoint Server 2010 SP1
  • Microsoft SharePoint Server 2013
  • SharePoint Server Online

Option 1: Do Nothing

Simply, if we do not perform any integration then SharePoint cannot access/benefit from any of the data in CRM and CRM cannot use SharePoint as a repository for its documents and the only option for working with files will be to attach them to CRM Activity or Notes.  Files attached in this way will, of course, not be searchable.


Figure 1: Without SharePoint the only option is to attach documents to Notes/Activities.

Option 2: Out of the Box

CRM 2011 and 2013 add slick “out of the box” integration options to get CRM and SharePoint working together and these are configured via the CRM Settings > Document Management page.  For CRM 2013 online a pop-up alert appears at the top of the page nagging you to set this up.

Essentially you point your CRM at a SharePoint instance and select whether you want to create folders for each entity type or create sets of folders underneath a Contact  / Account parent node.  Whenever you then wish to associate documents with your CRM record, a SharePoint folder is created (if one does not exist) and the uploaded material is placed there.  A recent enhancement in the Spring 2014 release of CRM is that the SharePoint folder now contains the CRM record GUID to make this easily available to any SharePoint code.

To present the documents stored on SharePoint within CRM there is the free CRM List Control.  This gets installed on the SharePoint server (under Site Settings > Web Designer Galleries > Solutions) and presents the list of documents in a style consistent with CRM’s look and feel.  If this List Control is not installed then CRM simply renders an IFRAME to show the SharePoint contents.

With CRM 2011 and (I believe) 2013 on-premises you need to download and install the List Control yourself but if you’re working with CRM and SharePoint online then the List Component is not required and direct server to server communication can be enabled instead.

The List Components renders SharePoint document lists with familiar CRM look and feel.

Figure 2: The List Components renders SharePoint document lists with familiar CRM look and feel.

Option 3: IFRAMEs

Another nice simple option, you can expose CRM pages within SharePoint and vice-versa by simply setting up IFRAMEs and referencing the appropriate URL.  This is particularly useful when you want to deliver CRM Dashboards or SharePoint document lists that are not linked to CRM data.

Security considerations are important here t ensure that the authenticated user works across both sites.

IFRAME used for delivery of data.

Figure 3: IFRAME used for delivery of data within a CRM Dashboard.

Option 4: SharePoint Business Connectivity

SharePoint includes the Business Connectivity Services to allow SharePoint Team Sites to display and work with data from a range of other sources.  You’ll need the free SharePoint Designer to configure this but the basic steps are to create an External Data Source and set up the Lists and Forms that SharePoint will use to display the data retrieved.

I set up a demonstration for CRM 2013 on-premises and SharePoint 2010 by setting up a SQL Server External Data Source referencing the CRM database.  The only supported way to work with data within the CRM database is via the Filtered Views and so this method can be used to present Read-Only data but not to allow Updates and Deletions of CRM data from SharePoint.

Figure 4: CRM Data delivered as a SharePoint list via the Business Connectivity Service.

Figure 4: CRM Data delivered as a SharePoint list via the Business Connectivity Service.

Option 5: SharePoint Search

The previous example of using the Business Connectivity Services can be extended to set up a SharePoint Basic Search Centre relying on the External Data Source of a CRM database.  This is particularly useful if you want to search multiple entities within the CRM with SharePoint.

Figure 5: Creation of a SharePoint Search site working with CRM data.

Figure 5: Creation of a SharePoint Search site working with CRM data.

Option 6: Power BI

Although it strays a little from the subject of SharePoint and CRM integration, it is worth noting that Excel 2013 comes with an ORest connector that can be used to pull CRM data in to Excel for Power Viewm Power Pivot and Power Map visualisations.  Data Models can be built and data from several sources linked within Excel to provide a “mash up” of CRM and SharePoint data.

The final Excel containing the data model and its reports can either be uploaded to a SharePoint site document list and opened with Excel online or can be published to the dedicated Power BI site offered as a service via Office 365.

Power BI looks set to become then the quickest and easiest way to deliver reports using both SharePoint and CRM data.

Figure 6: Exploiting CRM data within Excel for Power BI.

Figure 6: Exploiting CRM data within Excel for Power BI.

Option 7: Custom Code

Finally, the web service endpoints exposed by SharePoint and CRM can be used by custom code for bespoke integration.  CRM exposes both SOAP/WCF and ORest services and one thing to note is that if you’re planning to integrate CRM 2013 and SharePoint 2010 you’ll need to create your own proxy service in the middle as CRM 2013 is .Net 4.0 and SharePoint 2010 Web Parts only support .Net 3.5.

The CRM SDK contains sample code showing you how to programmatically work with the SharePoint entities within CRM.

Figure 7: C# Code executing against CRM to work with SharePoint data.

Figure 7: C# Code executing against CRM to work with SharePoint data.


The core intention is to use SharePoint as a document repository for CRM but the possibilities of working direct with Filtered Views in the CRM database (for on-premises), with Power BI and with the CRM SOAP and ORest web services means that SharePoint could just as easily be used to deliver CRM Reports or be a portal solution on top of CRM data.

For companies already using SharePoint as their key collaboration and communication tool, there are therefore plenty of options for bringing CRM “in to the fold” and making its functionality available.


Here’s a list of useful articles and references – everything you could possibly want to know about SharePoint and CRM!

Overviews & Introductions

Walkthrough of setting up CRM Online and SharePoint Online: –

Blog Series on Various Integration Options

Shortcomings of Security Model

Power BI in CRM

Using BDC service within SharePoint to pull in CRM data.

Calling SharePoint from CRM

Microsoft Exam MB2-702 – CRM 2013 Installation & Deployment



So I am churning out these exams at the moment to keep the boss happy and benefit from a Summer break in the usual rush of project work.  Next up was the beast that is installing and deploying CRM 2013, something a little outside my regular job title but I have played around with installs on virtual machines for customer demos.

Happy to say that today I took and passed MB2-702: Installing and Deploying CRM 2013 however and this post then covers how I prepared, what sorts of questions came up and what material I used.  It follows the same format as my other posts on CRM certifications.

The Exam

The exam is the usual 48 questions of multiple-choice format with a passing level of 70%.  It concentrates on installing CRM Server and all related elements (the CRM Outlook client, the Email Router, Active Directory), upgrading from CRM 2011 to CRM 2013 and how to troubleshoot and maintain your shiny new CRM once it is in place.  Both CRM 2013 online and on-premises/partner-hosted are covered in the exam.

The Microsoft page relating to the exam is here: –


The main resources I would recommend are: –

1)      If you can get hold of the official course material for this exam (course code 80539A) from the Microsoft Online Courses (MOC) site then this is the best source of training.  It includes ten student PDFs for each of the main topics and also PowerPoint and virtual machine for lab exercises.  Working through this is the best way of preparing as questions on the exam should limit themselves to what is covered on this course.

2)      There is the installation and preparation section of the CRM 2013 Implementation Guide and this is also a great resource for learning about how to prepare, plan and execute your CRM deployment.

3)      Any notes and material related to the older CRM 2011 Installation exam – MB2-867 – are useful as background material as the new exam will continue to test feature that have not changed (much) between CRM2011 and CRM2013 such as Email Router set up, Internet Facing Deployment configuration etc.

4)      If you’re still hungry for more, then check the end of this article and I will paste the notes that I made when preparing for the exam although they are rather rough) to show you exactly what I considered important.

5)      I reverted to MSDN articles to clear up a few unclear points about version compatibility.

6)      Finally there is no substitute for playing with a trial CRM 2013 online version or walking through an on-premises CRM 2013 install yourself.  The bulk of the questions on the test relate to doing this and so you should ideally have installed CRM in the course of your job or be prepared to set aside time to actually do a deployment yourself.

Points Covered

As a general pointer, the following sorts of questions came up a lot for me during the exam and are mentioned on the curriculum link: –

  1. Make sure you know your way around the Office 365 administration interface, be comfortable on the steps needed to set up a new CRM user here and assign a license to them.  Know what you can change concerning the CRM instance itself.
  2. You should particularly know the difference between the administrative roles in O365 and the security roles in CRM, what is where?
  3. Understand the different rights of the essential, basic and professional licenses.  I don’t believe Enterprise license is covered on this exam as it was introduced with the CRM release that post-dates the exam.
  4. Know your online and on-premises licensing, particularly what licenses are needed for different deployment scenarios (multiple servers hosting CRM roles, legacy users, do you need a license for email router or tablets and smartphones?)
  5. Understand the anatomy of a CRM Server, the services that get installed and the role group that they belong to.  You should know which key features are processed by which services and how you would set services up in a load-balanced environment.
  6. Understand the role of Active Directory, what it does for CRM and how you might migrate CRM users from one AD domain to another.  You should know the domain requirements for all the elements in a CRM solution (SQL Server, CRM Server, Email Router etc.)
  7. A bit of memory work but you should know the principal operating systems and versions that CRM and its allied elements support.  I’ve included a table in the next section to try to pull this all together.
  8. Know the difference between workgroup and CRM server and how/if you can migrate from one to the other.
  9. Know how you use product keys during a CRM installation/upgrade.
  10. As I mentioned already, you should walk through at least one CRM on-premises install if you have never done one and get a feel for the main steps, it’s the best way to learn.
  11. Once you have done this you’ll also appreciate the command line interface for installation and what it is doing behind the scenes.
  12. Likewise, provision at least one CRM online instance if you don’t do this as part of your job and have a good nose around Office 365 Admin so you’re comfortable which what you can do.
  13. During on-premises installation understand what you would do if you did not have rights to create Active Directory groups and had to use ones already set up for you by an administrator.
  14. Know the difference between delivering CRM via HTTP and HTTPS and how settings interact between the CRM Deployment Manager and IIS.
  15. Know what the CRM Reporting Extensions are, where they get installed and what they give to CRM.
  16. Similarly, know what the CRM Authoring Extensions are, where you install them and what they are used in conjunction with.
  17. Internet Facing Deployment (IFD) is a big topic and one that I was personally weak on having never done a proper install.  You should be familiar with the high-level steps of IFD and the role of each of the key components.  You should know how you install a new CRM instance to be an IFD and how the procedure is different to change an existing CRM instance into an IFD.
  18. Pay close attention to the role of Active Directory Federated Services, what it is doing for IFD and the port it operates on.
  19. Load-balancing is a similar tricky subject and like IFD might be something that you (like me) have never had to personally implement.  You should what CRM roles must be installed where for load balancing and, related, how you configure CRM to use a SQL cluster.
  20. I had a number of questions on disaster recovery, particularly how you plan to restore each element in the CRM architecture in case of failure (what do you back up?)  Your experience at installing a CRM instance will be of help here so you can explain how you would quickly redeploy just one element of the architecture (CRM server, Email Router, AD, SQL Server) in case of failure.
  21. CRM 2013 introduced server-side synchronisation for email and so you should be comfortable on what it does, how it differs from the Email Router and how it is configured.
  22. You need to go and play with the Email Configuration web page under Settings within CRM and understand the entities there like server profiles and mailboxes so you’re comfortable with what gets configured where.
  23. Know what a forward mailbox is, why it might be used, why and when you approve email addresses in CRM and how emails are tracked (correlation, tracking tokens, smart matching),  Again any time you can dedicate to playing with these and actually configuring some working mailboxes will be time well spent.
  24. Know the pre-requisites for installing the Email Router.
  25. Definitely install and have a play with the Dynamics CRM for Outlook control, you should be happy with the functionality that it offers and au-fait with the constraints for multiple users, multiple organisations, going offline etc.
  26. You should also know what permissions and rights are needed to install the Outlook control and how upgrade from CRM 2011 to CRM 2013 and update rollups affects it.
  27. Upgrading is a whole section in itself and you should know the different upgrade options (in-place, side-by-side) and their strengths and weaknesses.  I was expecting some scenario questions on these but didn’t get any.
  28. You should understand the option to defer the table merge at upgrade.
  29. You should know about upgrading the email router.
  30. Know how the update rollup packages for CRM work, just what Microsoft release and how they get deployed.

That’s a bit of a dump of everything I remember being important from the course study and from the emphasis placed in the exam.

Version Compatibility

Knowing which versions of operating systems, databases, browsers etc. are required for CRM will help you with a number of questions.  You should have gained insight into this when you did your own install but here is (what I hope is) an accurate list taken from course notes and online sources as of June 2014.  It details what I believe are the key things worth committing to memory.

Software Compatible
CRM Server Windows Server 2008 (x64) SP2Windows Server 2008 R2 (x64) SP 1

Web Server, Standard, Enterprise & Data Centre for 2008

Windows Server 2012 (x64)

Standard and Data Center for 2012

SQL Server SQL Server 2008 (x64) SP 3SQL Server 2008 R2 (x64) SP 2

Developer, Standard, Enterprise & Data Centre for 2008

SQL Server 2012 (x64) SP1

Standard, Business Intelligence & Enterprise for 2012

Outlook CRM Client Office 2007, 2010, 2013Windows Vista (x32 and x64) SP2

Windows 7 (x32 and x64)

Windows 8 (x32 and x64)

Windows 2008 Remote Desktop Server

Windows 2008 R2 Remote Desktop Server

Windows 2012 Remote Desktop Server

IE8 or IE9 for setup

Email Router Windows 7 (x32 andx64)Windows 8 (x32 and x64)

Windows Server 2008 (x64)

Windows Server R2 2008 (x64)

Windows Server 2012

Exchange 2007, 2010, 2013

Exchange Online



SharePoint SharePoint 2010SP1SharePoint 2013


MB2-702 does take some dedicated study and, ideally, some real-world experience installing and maintaining a CRM instance both online and on-premises.  If you’re coming to the exam as a seasoned CRM admin then you’ll want to concentrate on any elements of the solution with which you have less experience (IFD, load balancing, disaster recovery) and if you’re coming from a CRM business analyst or developer background where you have less day-to-day contact with deployment then it’s well worth creating a virtual machine to play with and a trial online instance.

Kev Notes

As promised, here are my own revision notes taken from the course material.  They are quite long and detailed as there was a lot of new material for me.


MS Outlook Connector – Unable to Track Emails?



I came across a small “gotcha” today – I’d configured the MS Outlook Connector against a trial CRM Online instance and noticed that although I could synchronise appointments and contacts when I hit the “Track in CRM” button the email remained untracked!  This article describes the reason for this (email settings) and what the solution is.



The scenario is: –

  1. You have the MS Outlook Connector for Dynamics CRM installed.
  2. You have it referencing a CRM Online instance.
  3. You can happily sync appointments and contacts in both directions.
  4. The “Track in CRM” is active and when you click on it, it changes to “Untrack” as you expect.
  5. But you notice the message “This email is not being tracked in CRM” – the button is lying to you!
  6. You also notice that “Convert To”, “Add Connection” and “View in CRM” in the CRM toolbar in Outlook are also greyed out.


The reason is down to the email and mailbox settings in CRM.  by default when you set up a new online instance. it is configured with Server Side Sync set as the mailbox synchronisation options.  It is this which needs to be changed to the MS Outlook Connector to ensure that the mail handling is consistently


You can find the resolution in a Microsoft Knowledge Base article.  Essentially you look at the default mail settings for the CRM instance under Settings > Email Configuration > Email Configuration Settings and set it to be “Microsoft Dynamics CRM for Outlook” for the Incoming and Outgoing Email (Appointments, Contacts and Tasks should already be set as Outlook which is why they were working).  A screenshot is shown below.  You then apply this default settings to the mailbox of all users that you wish to turn Email tracking on for.


You could also leave the default alone of course and go direct to each user’s mailbox settings via Settings > Emails Configuration > Mailboxes and set it there (screenshot below) – this would be useful is you wanted SOME of your users to be able to track their emails from Outlook but not all.



Once you have made this change, the user’s need to stop and start MS Outlook and I forced a Synchronisation refresh and all was well.

Complicating the Simple



I had a recent need during some pre-sales work to try to dispatch an email from CRM 2013 in a totally non-standard way.

The challenge was to CREATE an email activity entity record in CRM from an external application and then use a workflow to try to actually send it rather than either the user clicking on the “Send” button or the workflow using a “Send Email” task.  

A solution was not found but some research suggested that the approach chosen may work with the use of the email router as described below.

The Set Up

We were using a CRM 2013 on-premises installation with Update Rollup 1.  We had a number of other external systems connecting via the CRM web service API which were creating email entities directly within CRM, such entities are created with DRAFT status.

We were using MS Outlook with the CRM Outlook client installed and connected to Hotmail for the actual email dispatch rather than the effort of setting up an Exchange or using the Email Router

The Build & Test

The challenge then was to detect that an email activity is created and force CRM to send it.  To do this I created a workflow which: –


1) Had a scope of organization.

2) Detected the creation of an email activity with a particular title (hacky I know but it was a demo)

3) Updated the email record to set the Number of Delivery Attempts of the email to a number > 0 and the direction to OUTGOING

4) Then updated the status to “Pending Send”


A screenshot of this abomination is below: –



I rather hoped this would be enough and the Workflow did correctly fire and send the email if I manually created a record within CRM.  However although it correctly fired and made the changes when the email activity record was created by the external application via the web API the email did NOT get sent 😦

A pretty similar approach to that taken to resend failed emails by this blogger:

With the limited time we did not manage to resolve this, even though we forced the emails in to the PENDING SEND state and set what we believed were all required fields, Oulook just would not relay them on.

We didn’t get time to check but some online research suggested that the only way to enable this approach is to be using the EMAIL ROUTER for email dispatch, I guess it might be polling CRM in a way that is critically different from CRM.

Anyway, I hope it helps anyone else going down this slightly non-standard way.

Microsoft Exam MB2-703 – CRM 2013 Customisation



A few months ago Microsoft updated their set of four exams for Dynamics CRM to bring them in line with the CRM 2013 release.  Having done the original four exams in their CRM 2011 “flavour”, I took and passed MB2-703: Customising and Configuring CRM 2013.

This post then covers how I prepared, what sorts of questions came up and what material I used.

The Exam

The exam is the usual 48 questions of multiple-choice format with a passing level of 70%.  It concentrates on everything that can be customized and configured with CRM 2013 using the “out of the box” tools.  The full curriculum list is at the following link, and this should be your golden standard for what to study and your check list of knowledge just before going in to sit the exam.


The main resources I would recommend are: –

1)      If you can get hold of the official course material for this exam from the Microsoft Online Courses (MOC) site then this is the best source of training.  It includes eleven student PDFs for each of the main topics and also PowerPoint and lab exercises.  Working through this is the best way of preparing as questions on the exam should limit themselves to what is covered on this course.

2)      There is a new Customization guide within the CRM 2013 Implementation Guide and this is also a great resource for learning about customization options and restrictions.

3)      Any notes and material related to the older CRM 2011 Customisation exam – MB2-866 – are useful as background material as the new exam will continue to test feature that have not changed between CRM2011 and CRM2013 such as Business Unit organization, Security, customizing Views etc.

4)      If you’re still hungry for more after that then email me and I’m happy to pass on the notes I made (although they are rather rough) to show you exactly what I considered important.

5)      Finally there is no substitute for playing with a trial CRM 2013 online version and the tablet/smartphone application (if you have a device) to test out some of the new features and work through the labs from the MOC material mentioned at point 1.  Have a hunt around for useful blogs covering the new features if you want to go a bit deeper.

Points Covered

As a general pointer, the following sorts of questions came up a lot for me during the exam and are mentioned on the curriculum link: –

1)      Make sure you know how business units are organized and what happens when you deactivate a business unit, what happens to users belonging to that Business Unit?

2)      Know what inherited security roles are and how they behave when Business Units are reparented.

3)      Know the different types of Views within CRM 2013 and particularly the new view type Associated View.  Know what fields you can include within a view and the restrictions on sorting and specifying field as searchable.

4)      Know how views can be used in sub-grids to provide data and how the sub-grids themselves can be set up for lists or charts.

5)      Know how responsive design works with respect to tabs, columns and sections and how the same screen might get rendered on tablets and smartphones.

6)      Know some of the restrictions for the tablet application – how many dashboards can you have, can the user change forms, how do long complex forms get rendered?

7)      Know about the different types of relationships between entities within CRM 2013 and the differences between native and manual many-to-many links.

8)      Know the restrictions on relationships, the difference between parental and referential and how these get configured within CRM.

9)      Know what aspects of entities you can enable and disable and which ones can’t be disabled once they are turned on (Notes, Activities, Business Process Flows etc.)

10)   I didn’t get any question on Access Teams but since they are a new feature it would be wise to study these.

11)    Understand how Business Process Flows work, how they interact with security and how many flows you can have for an entity and how CRM reacts if you swap between flows.

12)    Understand how Dashboards are used, what you can place on a dashboard and how they render on tablets.

13)    Be comfortable with the use of managed and unmanaged solutions, what the difference is, how you create a managed solution and what you can use the version numbering for.

14)    Understand how to create a private chart from a public one.

15)    Understand how auditing works within CRM, how and where it is enabled and how the system behaves if you turn it off temporarily.

16)    Understand the difference between global and local options sets and how these might behave when you have set up mappings between two entities that both use an option set.

17)    Understand field level security and how it behaves across all platforms that CRM can be delivered on.

18)    Know your way around Quick Create and Quick View forms, what they are used for, where they get accessed from within CRM and constraints about using them.

19)    Know about the new Lync, Email, Ticker and URL formats for the Single Text field.

20)    Understand the use of and restrictions surrounding Business Rules, where and when you would use them, what you can do with them.



In summary, for anyone that has already taken the CRM 2011 Customisation exam then I think the Royal road to success with MB2-703 is to have a relatively quick refresher on the customisations features you’re already probably very familiar with from CRM 2011 before concentrating on the new features that CRM 2013 introduces (Quick Create/View Forms, Business Process Flows, Business Rules, Tablet Application, Associated View etc.)

For anyone approaching this exam without the CRM 2011 background then the Microsoft course along with some dedicated time playing with the CRM is essential.  There were lots of questions concerning how you achieve certain customisations within CRM and that sort of thing is much easier to remember if you have actually walked through doing it yourself, rather than simply reading about it in a more abstract manner.

Finally good luck and take heart, my experience was that the questions were clear and concise with little ambiguity so not too difficult if you’re prepared thoroughly.

Kev Notes

Here are the notes I made during my own preparation, I hope they are of use to you.


A CRM 2013 Azure Portal for Xmas

Kev Xmas Portal


Continuing my experience of playing with and learning about Dynamics CRM 2013, my next challenge was to build my first web portal on Azure that interacted with data held in a CRM online trial instance.  This article provides a step-by-step walk-through of that experience and I hope it might be of use for anyone else getting to grips with the basics of portal creation.

The resulting portal site can be visited at: –


The tool set/systems that I used for this build were: –

  • My MSDN subscriber account on Azure.  You can sign up for a free trial at
  • A free 30-day online trial of Dynamics CRM 2013.  You can sign up for this at
  • Visual Studio 2012 as my integrated development environment (IDE).  Download from your MSDN account if you are a subscriber or chose another IDE of your own preference.
  • A free Xmas-themed CSS from
  • The Dynamics CRM 2013 Software Developer Kit (SDK) for samples and ideas.
  • The CrmSvcUtil.exe tool which ships as part of the SDK.  When you unzip the SDK you will find it in directory SDK\Bin
  • I wanted a nice Light Box effect for my Xmas Advent calendar and so used the lightweight jQuery Fancybox.  Screenshot below.


Xmas Advent Calendar

I had already created a CRM 2013 solution containing the personal address book data of my friends in a previous exercise.  You can read about that in my “Hello World” blog post.  So using that as the foundation my portal idea was to set up a Xmas countdown advent calendar where each door revealed a photo that invited my friends to take part in a caption competition.  The same site was also to allow the visitors to look up the data held about them in CRM and amend it if necessary.

Finally I was going to run a classic marketing campaign out of CRM to inform all my contacts that the site existed when it was finished.

The Portal Build

The build proceeded as follows: –

  • Registered for a 30-day trial CRM and then loaded my address book solution in to this and my friend’s data.
  • Extended this solution to create a simple custom “caption” entity that I would use to store the entries for the caption competition.  This simply needed to store two text fields (name of submitter and the caption itself) and the day of December for which the caption was submitted.  A screenshot of the caption entry list page in CRM is below.


  • Logged in to Azure and requested a new website to be created.  The connection details for this site are shown on the Dashboard page.
  • Opened the command prompt and navigated to the folder in which I had extracted the CRM 2013 software development kit – under the Bin sub-folder the CrmSvcUtil.exe tool can be found.  This tool is used to interrogate an instance of Dynamics CRM and build a .Net class that models all the entities.  This class can then be included in projects that work with the CRM (such as my portal) to provide early binding of class types for working for CRM data.  This means that we can write strongly typed code with full support for IntelliSense and compile-time validation that nothing is awry.  Here’s an MSDN Article about using the tool.
  • The format for using this tool (your data to replace the parts in capitals) is: –


  • With the .cs class file generated I was now ready to begin work on the portal itself.
  • I chose the ASP.NET Web Forms Application Template from within Visual Studio 2013, chosing to work in c#.
  • I created a simple website of three pages with the CSS applied SmoPic.  The pages were: –
    • The advent calendar itself, 25 photos of my family with some c# code-behind controlling access based on the current server date.  the jQuery Fancybox code was integrated to give up a pop-up showing a larger version of each photo and the form for caption competition entry.
    • A “My Data” page in which visitors could enter a code I was to give them by email and access the data stored about them in CRM.
    • A caption review page with a simple ASP.NET data grid extracting and displaying the captions entered to date.
  • I extended the samples in the CRM 2013 SDK to create a basic CRM connection class and helper class to allow my code-behind to communicate with CRM.  The URL and login details were stored in the site web.config.
  • Captions were submitted by creating instances of the caption type provided in the class generated by CrmSvcUtil.exe.  for example: –

// Use the avdemo_captionentry created in the CRM class by SvcCRmUtil.exe and
// populate its attributes with values from the portal web form.  Use the
// Create method against the CRM proxy to create this record and returns its
// global unique identifier (GUID) assigned by CRM
avdemo_captionentry newCaption = new avdemo_captionentry();
newCaption.avdemo_Day = dayNumber;
newCaption.avdemo_name = txtName.Text;
newCaption.avdemo_caption = txtCaption.Text;
Guid _newCaptionId = crmAddressBookProxy.Create(newCaption);

  • Any data retrieved from CRM used LINQ syntax, for example: –

// Working against the CRM, execute a LINQ query to return the captions entered to date
// and bind these to a ASP.NET Grid View on the web form
gvCaptions.DataSource = crmAddressBook.avdemo_captionentrySet.ToList().OrderByDescending(x => x.avdemo_Day).OrderByDescending(y => y.CreatedOn);

  • This site was ran and tested locally out of VS 2012.
  • Once satisfied I published the site directly from Visual Studio in to Azure following the instructions on this blog.
  • As a last step I executed a marketing campaign from CRM with a template email with a link to the new site to invite friends to connect.  I added an AccessCode field to the contact entity which I populated with random data uploaded from MS Excel for friends to use to access their information.


I know this article has remained very high level and not provided a throughly detailed walk-through but I wanted to highlight the main experience points that: –

  1. The CRM SDK provides some excellent resources and classes for connecting to and working with Dynamics CRM.
  2. Using CrmSvcUtil.exe is optional but if you do use it to provide early binding it simplifies how you write and validate your code.  Without it you need to rely on more generic CRM classes – an approach called late binding.
  3. The experience of publishing directly from Visual Studio 2012 to Azure was painless and very slick.
  4. At the time of writing there were no CRM Templates for Visual Studio 2012, they exist for VS 2010 I believe but had not yet been updated.  Had they existed (or had I been prepared to use VS 2010) I believe Microsoft provides a CRM portal template to make this sort of build even quicker.
  5. Overall the experience was pretty straightforward so that portals to expose CRM data can be quickly provisioned.