Enabling SharePoint Integration on a CRM Online Trial

These instructions will walk you through how to enable a SharePoint Online trial to go with your CRM Online trial and how to activate the native integration between those products.

First, setup a CRM Online trial, if you don’t have one already.  

Microsoft CRM Online is part of Office 365 so a CRM Online trail actually provisions an Office 365 trial as well.   A cool byproduct of that is we can extend our trial to include the trial of other products on the Office 365 platform, including SharePoint Online.

Go to your Office 365 admin page at:  https://portal.office.com/default.aspx    If prompted, enter the credentials you entered when you requested your CRM Online trial.

image

From the Admin menu navigate to the Office 365 Admin center:

image

Click on Purchase Services:

image

Scroll down until you see the option  below and then click the Trial link:

image

Click through the next couple of screens to activate the Trial:

image

You will land back on the Office 365 Admin Center Dashboard where you can see the health/status of the O365 services that you have provisioned.   Note your SharePoint instance has a status of “provisioning…”.   We need to wait for that to complete:

simage

Give it 5 minutes and then refresh your browser and you should see:

image

We now have a trial instance of SharePoint Online.  Next step is to enable the SharePoint integration over in CRM.    The first thing we will need in CRM is the SharePoint URL.   To locate that launch SharePoint from the Admin menu:

image

You will be taken to the Site Collections page in SharePoint.   Copy your URL that resembles the below:

image

Next, head over to CRM by clicking the CRM link from the Admin menu…

image

… and click OPEN on the next page:

image

CRM will launch.  If you have not previously dismissed the “Enable Server-Based SharePoint Integration” notification in the CRM header you can click the Enable Now button to pop the configuration wizard.  

image

Otherwise, from the SETTINGS menu select Document Management and then “Enable server-based SharePoint integration”:

image

Either way, you will end up on the screen below, where you need to paste in that SharePoint URL you grabbed earlier, and then click Next:

image

On the next screen, give CRM a few moments to run some validations, and then click Next:

image

On the final screen, click Finish:

image

As that last screen told us, we have now linked our CRM Online and SharePoint Online servers but we have a few more steps to complete to guide CRM on how it should auto-create Document folders for us.   If you are not there already go to SETTINGS –> Document Management and then click on the link below:

image

On the next screen we need to select the CRM Entities that we wish to enable for Document Management / SharePoint Integration:

image

You will notice some entities are selected for you.  These are the entities where Document Management is enabled by default on the entity definition.  You can toggle this setting from either place.  

Make your selections, paste that SharePoint URL in again, and then click Next:

image

On the final screen you need to choose how you want your SharePoint folders to be structured.   If you leave the Based on entity option unchecked you will end up with individual folders in SharePoint for each entity and then each instance of that entity – e.g.:

image

If instead, you prefer to have say an Account-centric hierarchical folder structure like the below…

image

.. you can enable that by configuring the SharePoint-CRM integration as per below:

image

Click Next on the above screen and a message will pop informing you that Document Libraries are being created for each Entity:

image

Click Ok and the next screen will indicate the status of the provisioning:

image

Once the Status column in that indicates success for all selected entities click Finish – and you are done.

To test this out, pick one of the entities you enabled for SharePoint integration and either pop an existing record or create and save a new record.   I am going to open an existing Account record:

image

With a CRM record open in front of you, access the Related Records menu (the little down arrow after the record name in the blue navigation bar) and click DOCUMENTS:

image

Up until this point a Document folder does not yet exist on the SharePoint server for this record.  A Document Library exists for the entity (e.g. there will be an “Accounts” library) but that library is initially empty.   Individual folders for each instance of an Entity are created on demand.  A message box will prompt you to confirm you want a folder created, click Confirm:

image

A few moments will pass and then the Documents View will appear displaying the contents of the Document Folder that was created on SharePoint:

image

This server-based CRM-SharePoint integration is a new feature introduced in the Spring 14 release for Dynamics CRM 2013.   As of today (7-20-14) it only supports integration between CRM Online and SharePoint Online.   If you want to use an on-premise version of either you need to go with the older integration architecture (i.e. iframe in the special list component).  

The new server-based integration represents each SharePoint document as a record in CRM, allowing the use of a normal Associated view rather than an iframe.   More importantly, it allows you to map metadata from the CRM entity to the SharePoint document record, improving search within SharePoint – but I won’t go into that here.

To test the integration, use the UPLOAD button to save some documents into SharePoint.   They will be stored in SharePoint, linked to your CRM record and then from that point on they will be directly accessibly from CRM:

image 

I spoke earlier about the SharePoint document folder structure.  If you plan to access all documents via CRM and never use the SharePoint user interface then the folder structure is irrelevant.     If you are curious you can click the OPEN SHAREPOINT button and see how things look there:

image

Once I upload documents to my Account and also to one of the Account’s Opportunities, I end up with this folder structure in SharePoint, within the Account Document Library:

image

The files listed are linked at the Account level.  Within that opportunity folder I have a sub-folder per Opportunity (in my case there is only one):

image

And within that folder, I have that Opportunity’s documents:

image

You will notice that the folder that was created for the Opportunity was named using the concatenation of the Opportunity’s name and its unique GUID.  The same approach was used for the Account folder and for every folder the CRM-SharePoint integration creates:

image

Back in CRM, on that Opportunity record, if I go the Documents view under Related Records and click the EDIT LOCATION button you will see where CRM stores the Site details and folder name for this record:

image

This is important to understand.  CRM is not dynamically calculating the folder name each time it goes off to SharePoint to retrieve the documents.   It stores the folder name in the CRM database when it originally creates it.  This allows for the Opportunity to get renamed in CRM without causing the CRM-SharePoint integration to break.   In that instance, the worst that happens is the folder name in SharePoint becomes out of date and anyone browsing directly in SharePoint will see the original name.   And that can be updated, you would just need to edit the folder name both in SharePoint and also in CRM via this Edit Location screen.

Hope this helps someone. 

About these ads

Microsoft CRM Form Load Performance Analyzer

My colleague William Phillips educated me on a feature  in CRM 2013 that I hadn’t heard of before:   CTRL+SHIFT+Q

Log into CRM and hit CTRL+SHIFT+Q to reveal the Performance Center:

image

It won’t look very exciting initially as you need to Enable it:

image

Do that, and then click the Close button.

Next, navigate to a CRM form whose performance you wish to analyze.  Load the form and then click CTRL+SHIFT+Q to see the results:

image

A variety of form load milestones are captured for you.  

Optionally, click the Select Major button and you will get the details provide in Text  format:

Form Load Start (-> 0 ms)
Read-Ready (-> 595 ms)
Initialize Controls – ViewportInlineEditControlInitializer (-> 1297 ms)
Initialize Controls – NonViewportFormBodyInlineEditInitializer (-> 1345 ms)
Initialize Controls – DeferredQuickFormInlineEditInitializer (-> 1497 ms)
Form Full Controls Init (-> 1749 ms)

A pretty nifty feature.  I’m somewhat surprised I hadn’t heard of it before.  But a quick Google  search didn’t return much mention of this.  Hopefully this helps spread the word.

[UPDATE] – check the comments below for information on where this works and doesn’t work.   It definitely works on CRM Online with Internet Explorer.   Mixed reports regarding On Premise.

New in CRM Online Spring ‘14: Insights

Customers licensed for the Professional edition of CRM Online now receive for free a new integration to Insights for Microsoft Dynamics CRM.    In this post I will walkthrough the functionality and explains what’s available for on-premise customers.

What is Insights for Microsoft Dynamics CRM?

Insights is a Microsoft-licensed variation of the InsideView product that is now bundled into the CRM Online Professional license.  It is not deployed by default, but it only takes a few simple steps to add this functionality to your instance.  Once deployed, you receive a new HTML widget on your Contact, Account, Lead and Opportunity forms that pulls market data for that person / organization from InsideView’s data aggregation engine and embeds this into your CRM UI.   If you are familiar with the historic integration between InsideView and Dynamics CRM it is similar, but re-skinned and now free for CRM Online Professional customers.  Here’s how Insights looks in CRM 2013 on the Account form:

image

Here’s what you get with Insights for Microsoft Dynamics CRM…

Data Enrichment

Insights will automatically attempt to match your CRM Accounts against InsideView’s database (they have millions of company and contact profiles from around the world).  If the match is good, you can enrich your CRM record from InsideView’s data via the SYNC button:

image

This will pop a mapping screen allowing you to selectively choose which of your CRM fields you would like to overwrite with InsideView’s data:

image

Note, this is a one-time update only.  A copy and paste if you like, you are not establishing a 1-way integration.  A lot of this data will be fairly static though, so I don’t think this is a limitation and you can repeat this process on demand whenever you like.

The experience is identical on the Contact form.   If your CRM Contact can be matched to InsideView’s database you can enrich your data set via the SYNC button there:

image

Another data enrichment option back on the CRM Account form is you can search InsideView’s database of Contacts for that Account and easily insert any of those into your CRM.   Going back to my DELL example:  I go to my CRM Account record for DELL.  I click on Insights’ PEOPLE link.  I search for “North America Sales”, I find a key contact I want to connect with, so I click the SYNC button:

image 

Insights attempts to match to an existing CRM record for me but this Contact is net new for my CRM, so I go ahead and take up Insights’ offer to create a new Contact for me:

image

And just like that I now have a key sales contact added to my CRM, along with the details I need to reach out to them.  This sort of thing demoes very well:

image

Connections

The next cool thing we get with Insights is help with actually getting introduced to folks like this.   The Connections feature will aggregate all the connections you and your colleagues have stored out there in LinkedIn and in Facebook and also the Contacts residing in their Outlook and it will tell you if someone within your circle of acquaintances has a connection to your CRM Contact.

There is an opt in process to this of course.  You and your colleagues will need to go into the Connections setup and follow some simple instruction to add each of your Contacts into the mix:

image

image

image

The Facebook import simply required authorization.  The LinkedIn import required an export/import process but InsideView have done a great job of streamlining that, it took only a a few clicks.   The Outlook import is similar, requiring you do an export to CSV from Outlook manually.  There is no mapping required, once the data is exported you just select the file and click Go.

Something to think about here is the value of these Contacts.  LinkedIn has increasingly become non-personal.  I wouldn’t know 90% of my Connections in LinkedIn,  However, the Contacts in my Facebook and in my Outlook I do know and yet those connections may not be common knowledge for others in my Organization and I in turn may not know which Organizations my colleagues are trying to connect with.   Aggregating everyone’s circle of acquaintances and then sharing this out within the Organization to identify connections and enable introductions is a very powerful tool.

Stalk (Without Stalking)

The third major feature in Insights is the ability to have the latest news related to your prospects,, customers and competitors funneled directly into your Inbox each week.   In Insights this feature is called Watchlists.   Usage is simple enough, if you want to be kept up to date simply locate the record in CRM, go to the Insights widget and then select Watchlist from the FOLLOW menu:

image

Any news, posts, etc. that Insights catches will be accumulated into a daily or weekly digest and emailed directly to your inbox, keeping you nice and informed.   They monitor a pretty good range of online media and social networks for you (30,000 sources!).  Here’s an example from my inbox:

image

Options for On-premise Customers

If the CRM Online Professional license isn’t for you then InsideView have their classic offering for Dynamics CRM.  

The skinning lacks the CRM look and feel, but the functionality is the same:

image

And there is also an Enterprise edition available that allows you to build lists from their database and then pull those into Dynamics CRM via a simple export/import process:

imagel

Getting Hands On / Demoing Insights

To get your hands dirty with Insights simply spin up a CRM Online Trial and then follow InsideView’s instructions to enable Insights.

To try it out on an on-premise installation you can request a 30-day trial here.  You CRM Org does not need to be IFD enabled, except to enable the SYNC feature (as that feature has Inside View writing into your CRM).

I think its awesome that Microsoft have bundled this into CRM Online.   And in many cases this must be a no brainer for On-premise customers too.

Creating a Dynamics CRM VM on Azure

If you would like a standalone instance of Microsoft CRM for development / testing /demoing  consider using Azure.   Your MSDN subscription includes a monthly credit that can pay for it.  This overcomes the short life span of Online Trials and the performance and hard drive space issues associated with local VMs.   You can start with a template instance that includes Windows and SQL and you just need to add a few server roles and install CRM.

Jukka Niiranen wrote an awesome article and provide step by steps here:

http://niiranen.eu/crm/2013/10/setting-up-a-microsoft-dynamics-crm-2013-development-server-on-windows-azure/

image

Thanks Jukka!

Posting here so I can come back and  find this in the future. :)

New in CRM Online Spring ‘14 / Service Pack 1 / Leo: Entitlements

The Spring ‘14  / SP1 / Leo release for Microsoft Dynamics CRM 2013 gives us the ability to configure Service Entitlements for Customers and manage Customer Service incident volumes against those Entitlements.  Here’s exactly what you get:

Prior to the release of this new Entitlement feature we had Service Contracts.   Service Contracts allowed you to define for a customer and predetermined number of hours or number of Cases that the Customer was entitled to.   And then, by referencing this Contract against the Cases you logged against the Customer that allocation was automatically decremented.   This feature makes sense in the software industry for example where the purchase of a license or a support agreement might include a predefined amount of support that the customer can then draw down upon.   I have never heard of anyone actually deploying this feature so it is curious to see Microsoft invest in extending it. 

Entitlements offers similar functionality but now it allows you to get more specific around when the Customer is entitled to Support.  You can now define the support allocation for a particular channel (e.g. 100 hours of  email support vs. 50 hours of phone support).   You can also bind the support entitlement to a particular Product or Contact so that the Customer Service team provides support for the right things / to the right people.

Let’s step through this and see it in action.  Firstly, let’s start with the broadest possible entitlement.  

Generic Entitlements

From the Account form we will add a new Entitlement record:

image

The key information required here is the start and end date, the allocation type (number of cases, or hours) and the allocation:

image

There is also a “Restrict based on entitlement terms” field which if set to “Yes” will block  the logging of new Cases once the entitlement runs out.

Once you save the Entitlement record you need to Activate it:

image

You will then see it listed against the Account:

image

To see this Entitlement in action we jump over to the Customer record and add a new Case.  For the Case to count against the Entitlement the relevant Entitlement record must be referenced on the Case.  You would likely me this a required field in scenarios where Entitlements were utilized.   Once the Case is resolved you will then see the Entitlement balance reduced:

image

From the Entitlement record you can see the Original Balance (“Total Terms”) and the Balance Remaining (Remaining Terms):

image

And the Associated View will list all Cases that have been linked to the Entitlement:

image

Once a customer has used up their allotment the user will receive an error when selecting the Entitlement:

image

Channel-specific Entitlements

Now, let’s create an Entitlement for specific Channels.  Back on the Entitlement form simply add child records into the “Entitlement Channel” sub-grid:

image

A couple of interesting things to point out here… 

One, this is an editable grid (great to see more of these popping up in the CRM UI!).  

Two, the “Total Terms” field we were using before is not tied to the child records in the grid.  These won’t reconcile unless you do update them manually.  Perhaps you are meant to use one or the other and then hide the other.  Maybe this is just a deficiency in my pre-release version:

image

Anyway, to see this in action we Activate the Entitlement and then create a Case against the Customer and reference the Entitlement on the Case:

image

If a Channel is not specified on the Case then the Remaining Terms at the Entitlement level will be reduced, but the balance at the Entitlement Channel level will be unaffected.  Again, you probably need to make the Channel field mandatory on the Case if this how you intend to run Entitlements:

image

Coding a Case to both the Entitlement and the Channel will see the Entitlement Channel balance drop:

image

Contact and Product Specific Entitlements

Back on the Entitlement record we also have the ability to specify Products and/or Contacts.  You can’t enter an allocation against each Product/Contact but what this does is create a rule as to when the Entitlement applies.

Here’s an example:

Against my Entitlement record I associate Product X.   This is me saying: “this entitlement is for support incidents that relate to Product X”:

image

Now, when we log a Case for this Customer, if we specify Product X the Entitlement can be selected:

image

If a different Product that is no listed on the Entitlement is selected, we can’t select the Entitlement:

image

The behavior is the same for Contacts.  If you leave the Product / Contact field blank on the Case you can still select the Entitlement.  So the way to think of this is: “Once a Product/Contact is associated to an Entitlement, that Entitlement will no longer be selectable on the Case when any other Products/Contacts are specified on the Case”.  Again, if this behavior is what you are after you will probably want to make the Product / Contact field mandatory on the Case form.

New in CRM Online Spring ‘14 / Service Pack 1 / Leo: SLAs

The Spring 2013 / SP1 / Leo release for Microsoft Dynamics CRM 2013 provides new functionality for Service Level Agreements (SLAs).  The SLAs are configurable to your requirements and provide not only deadline monitoring but also automated warnings and escalations.

In this post I walk through the setup process and show the functionality in action.   Invest 5 minutes here and walk away up to speed on this new feature.

Configuration of SLAs

Here’s the logical flow for configuring SLAs:

1 Define your Organization’s holiday schedule (the exception days when CRM should stop the clock on its SLA calculations)
2 Define your Organization’s customer service hours (e.g. it might be 9 to 5, Mon to Fri or it might be 24 x 7 x 365)
3 Create an SLA ‘agreement’ for each Customer Service Offering your Organization provides
4 Define the SLA detail for each agreement.   You can create general rules for each SLA Type (First Response, Case Resolution, Follow Up) or you might want to create specific rules for e.g. P1 vs. P2 Cases.

The sub-steps here are:
- Define which Cases / Customers this applies to
- Define when the SLA should be considered in danger of being missed and the actions that should occur when that happens
- Define when the SLA should be considered missed and the actions that should occur when that happens

5 Activate the SLA agreement
6 Associate an SLA to an Entitlement
7 Associate the Entitlement to your Customer records
8 Start referencing the Entitlement on your Customer Cases (you could do this automatically via code or workflow)
9 If Cases are created that reference the Entitlement tied to the SLA and which meet the applicability criteria defined on the SLA then you will see the SLA take effect. 
CRM will check for SLA applicability both on create and on update of the Case so if the attributes on the Case changes and the applicability criteria is suddenly met (e.g the Case was bumped from P2 to P1)  then the SLA will be triggered and the countdown initiated.

Working with SLAs as an End User

When an SLA is triggered you will see the applicable SLA due dates populated on the Case form.  In the example below I created a Case at 1pm on a Saturday for a Customer whose SLA dictates first response within 1 hour and resolution within 4 hours.   The agreed customer service hours are 8 to 5, Monday to Friday.  CRM calculate the first response as being due at 9am on Monday (1 hr after the customer service schedule commences) and puts the resolution deadline at 12pm Monday:

image

The default way of informing CRM that first response has been provided appears to be a new field on the Case record: “First Response Sent”.   As an end user I inform CRM that I have completed first response by updating “First Response Sent” to “Yes”.    There is no immediate alert on the Case that the SLA has been met.   But once the SLA deadline is hit CRM will see that the expected action had been completed in time and no warning or escalation will be triggered.

You could also implement a Workflow to set this field for the User, based on say the entry of an outbound phone call against the Case.

And you don’t have to use this field as your success indicator.  In the SLA definition you can define whatever you like:

image

Behind the Scenes – SLA Workflows

Microsoft have used CRM’s workflow engine to orchestrate the SLA monitoring.   This is transparent, you can call up the SLA workflow via the Background Processes associated view:

image

Here is the workflow that was executed for my earlier example.  You will see the workflow is sitting in a timeout state, waiting for the SLA deadline.  Once that time is hit it evaluates the success criteria that was defined in the SLA rule and then either exits out (if met), otherwise it performs the escalation/warning actions that were defined:

image

Adding Visibility to the SLA Deadline – the new Timer Control

SLAs are more effective if the end user has visibility of the deadline.   CRM provides date time fields for each  SLA type:  First Response By, Resolve By, Follow Up By.   But better still, Microsoft have released a new Timer control we can add to our forms to provide an actual countdown and success/failure indicator.

To add this control, jump into the form editor, and insert it via the INSERT tab on the ribbon:

image

Selecting the Timer control will pop a dialog window asking for property values for the control:

image

Here you connect the Timer’s properties to the fields that you are using for the SLA.    The end result is the below.  Here I have a Case that I created at 5:45pm that has a 15 minute SLA (based on 24 x 7 support) for First Response, with a warning triggered after 5 minutes:

image

Once the 5 minute market is hit the timer changes in appearance to the below:

image

And then once the SLA deadline is hit and the SLA not met, the timer becomes red and switches to counting up, giving you how long over the SLA you are:

image

A couple of limitations of the Timer:

  • You can’t add it the form header or footer, only the body
  • The timer is not a field so it can’t be added to CRM views.  It is only effective on the CRM form.  On views, users must leverage the date time fields instead.  Some color-coded SLA identifiers would have been useful in the views. I guess you can do that via conditional formatting rules if using the Outlook Client
  • Each Timer control is bound to a set of fields.  This means if you want a Timer that overs First Response that then switches over to Resolve By you will need 2 Timers and some JavaScript to show/hide the Timers.

In summary, a cool new feature.   I especially like the configurability offered to automate any number of actions at the warning  and again at the deadline.

New in CRM Online Spring ‘14 / Service Pack 1 / Leo: Case Hierarchies

The Spring 2013 / SP1 / Leo release for Microsoft Dynamics CRM 2013 gives us the ability to link multiple Cases under a Parent Case..  Here’s exactly what you get:

Configurable Options

System-wide options can be configured under: Settings –> Service Management –> Parent and Child case settings

You can opt to have fields map down from the Parent when you add a new Child Case:

image

And you can determine how Case Closure should be controlled / automated:

image

Adding a New Child Case to an Existing Case

From the Case form a Command Bar now provides a means of adding a Child Case:

image

This pops the Quick Create Case form, with fields auto-populated based on the inheritance rules you configured:

image

Clicking Ok generates the Child Case, closes the Quick Create form and returns you to the Parent Case.  You can see the Child Case listed in a new sub-grid on the form:

image 

Now, if your Parent Case is already a Child Case of another Parent you won’t be able to do any of this.  Grandparent relationships are not yet supported.   If you are not seeing the “Create Child Case” button that will be why.

I tried disabling the Case entity for Quick Create to see if the “Create Child Case” button could pop the the ‘full’ Case form.   This didn’t seem to work, things just spun.  I expect this is a quirk of the pre-release software I am using.

I also tried adding a Child Case via the Sub-Grid rather than the Command Bar button and found that does the same thing as the button.

Parenting an Existing Case to another Case

You can also pick up an existing Case and then Parent it.  You just need to populate the lookup field on the Child Case.  This works fine.  In this scenario, the inheritance does not fire though (which make sense).  So, it is a similar experience to what we know with mapping rules on relationships.

Closing a Case

The process for resolving a Case remains unchanged.  If you configured Child Cases to auto-close they seamlessly close in background without notification.   If you configure it so that the Child Cases must be closed before the Parent can be you will get a helpful error when you try to break that rule:

image

Bulk Associate Cases to a Parent

One last feature. Say you have a bunch of Cases reported from Customers that all relate to the same issue.  You might like to link those all under the first reported Case for that Issue to drive your reporting.   From the Case view you can do this by bulk-selecting your Cases and clicking the “Associate Child Cases” button:

image

You need to select not only the Child Cases but also the one you want to be the Parent.   You will be prompted to identify the Parent:

image

And CRM pops a little confirmation dialog to let you know its all done:

image

Parent–Child Case Views and Attributes

To support parent-child relationships there is obviously a new “Parent Case” lookup field on the Case entity.   Microsoft has also kindly provided a “Child Cases” field that gives you the count of Child Cases attached to a Parent.   This was a nice surprise to see. 

You will also see a couple of new System Views that isolate Cases that are either Child Cases or Parent Cases (filtering on Cases that have one of these two fields populated):

image

Ok, what have I missed?  Please share anything via the Comments and I’ll add into this Post.

HTH