Australian Data Centre Bug Workaround – “Invalid Argument” in Workflow/Business Process Flow Editor

Recently it’s been reported by my colleague and a fellow Australian CRM MVP, Guy Riddle, that there is a bug on Australian CRM Online on Workflow/Business Process Flow editor that showing “Invalid Argument” error screen:

And on the Workflow editor it will produce an error log similar to:

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: A validation error occurred. The languageCode = 3081 not a provisioned or enabled LCID.Detail:<OrganizationServiceFault xmlns:i="<a href="http://www.w3.org/2001/XMLSchema-instance" target="_blank">http://www.w3.org/2001/XMLSchema-instance</a>" xmlns="<a href="http://schemas.microsoft.com/xrm/2011/Contracts" target="_blank">http://schemas.microsoft.com/xrm/2011/Contracts</a>">  <ErrorCode>-2147220989</ErrorCode>  <ErrorDetails xmlns:d2p1="<a href="http://schemas.datacontract.org/2004/07/System.Collections.Generic" target="_blank">http://schemas.datacontract.org/2004/07/System.Collections.Generic</a>" />  <Message>A validation error occurred. The languageCode = 3081 not a provisioned or enabled LCID.</Message>  <Timestamp>2015-05-21T23:35:31.0011596Z</Timestamp>  <InnerFault>    <ErrorCode>-2147220970</ErrorCode>    <ErrorDetails xmlns:d3p1="<a href="http://schemas.datacontract.org/2004/07/System.Collections.Generic" target="_blank">http://schemas.datacontract.org/2004/07/System.Collections.Generic</a>" />    <Message>System.ArgumentException: A validation error occurred. The languageCode = 3081 not a provisioned or enabled LCID.</Message>    <Timestamp>2015-05-21T23:35:31.0011596Z</Timestamp>    <InnerFault i:nil="true" />    <TraceText i:nil="true" />  </InnerFault>  <TraceText i:nil="true" /></OrganizationServiceFault>

One of the workaround that my colleague found is to set the format to English (US). To change this, navigate to Options > Formats > Change “Current Format” to English (United States)

Now you should be able to work on Workflow/Business Process Flow editor again.

HTH!

Whitelist Addresses Used By Microsoft Dynamics CRM

Recently I’m working in an environment that controlled their network access through a proxy server. When I’m going to test some feature of CRM 2013 on CRM online, I could not be authenticated properly. So, after a quick discussion, apparently it is caused by some of the URL addresses that used by Dynamics CRM is blocked in the proxy settings. So, in case anyone encounter similar situation, the list described in this KB article might help: http://support.microsoft.com/kb/2655102

North America based organizations:
http://clientconfig.passport.net/ppcrlconfig.bin
• http://disco.crm.dynamics.com
https://login.live.com
https://dev.crm.dynamics.com
http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl
https://online.dynamics.com
https://mbs.microsoft.com
https://go.microsoft.com
• .windows.net
• 
.microsoftonline.com

South America based organizations:
• http://disco.crm2.dynamics.com
https://dev.crm2.dynamics.com
http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl
https://online.dynamics.com
https://mbs.microsoft.com
https://go.microsoft.com
• *.windows.net
• *.microsoftonline.com

Europe, Africa and Middle East based organizations:
http://clientconfig.passport.net/ppcrlconfig.bin
https://login.live.com
https://dev.crm4.dynamics.com
http://disco.crm4.dynamics.com
http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl
https://online.dynamics.com
https://mbs.microsoft.com
https://go.microsoft.com
• .windows.net
• 
.microsoftonline.com

Asia / Pacific area based organizations:
http://clientconfig.passport.net/ppcrlconfig.bin
https://login.live.com
https://dev.crm5.dynamics.com
http://disco.crm5.dynamics.com
http://crl.microsoft.com/pki/crl/products/microsoftrootcert.crl
https://online.dynamics.com
https://mbs.microsoft.com
https://go.microsoft.com
• .windows.net
• 
.microsoftonline.com

Preparing CRM Online + SharePoint + Exchange + Power BI Trial (Part 4)

PowerBI Integration

Power BI is a really good tool to provide self-service analytics with focus on data visualisation. Out of the box Microsoft Dynamics CRM is equipped with powerful charting capabilities. However to connect CRM data with external data, such as finance or ordering system, we usually need to do data warehousing exercise. With the availability of PowerQuery, PowerPivot and PowerView capabilities in Excel we could generate CRM dashboard with self-service filter analysis that merged with external data sources.

Preparing Excel Power View Dashboard

In this example, I will not connect to external data. But solely using the CRM lead data to show the demographics of where is the company’s most strategic places to market and sell. I will start with a basic Excel report that pulling down Lead data from CRM. Open Microsoft Excel with the latest Power Query installed. For installation of Power Query: http://www.microsoft.com/en-us/download/details.aspx?id=39379

Selects Power Query Tab, select the data source From Other Sources > From OData Feed.

Previously I’ve made a post regarding the tips on only getting the relevant records by applying CRM OData Query in the oData feed here, so for this example, I will retrieve only open Leads:

Then it will prompt the account selection, since we are on Office365 account, selects Organizational Account and click on Sign in to sign in with the Office365 account.

Once signed-in click on save and Power Query will do data retrieval from the CRM Server

Once finished loading the CRM data, it will open up the Power Query Editor similar to:

Then click on Choose Columns to select the columns that we care for this report (Full Name, Company Name, Address1_Line1, Address1_City, Address1_PostalCode, Address1_StateOrProvince, Address1_Country and Estimated Amount)

Once the columns selected, we could re-arrange the columns to make the data neat, then click on Close & Load

It will load the query and pull the data from CRM to the worksheet, it might takes some time for large dataset.

Once loaded, we need to do some Power Pivot exercise to prepare the data model and manage the address fields to be recognised as address related data by right-clicking the Query click on Load to…. Choose both worksheet and Data Model

Once loaded, click the Power Pivot Tab and Click on Manage button

To mark the fields as address data type, click on “Advanced” tab on Power Pivot Select the columns header of the address data (street, city, state, postcode and country) and set the Data Category accordingly.

Once set, close the Power Pivot editor. To add the graphical view of this report, click on Insert tab and click on Power View

It will create a basic Power View dashboard similar to:

Then we might want to configure the dashboard to show the map and some chart by clicking on the Design tab and might be ended-up to be something like this:

Save this Excel Spreadsheet to be used later on in Power BI site.

Setting Up Power BI Site

Since previously in this example we are adding Power BI subscription from an existing CRM instance on Office365 tenant, the Power BI provisioning might not set up the Power BI SharePoint Site directly. So, I need to either a new site for Power BI or use an existing site. For this trial preparation, I will create a separate site for the Power BI purpose.

In Office365 admin portal, click on Admin navigation and click on SharePoint.

Click on New > Private Site Collection

I called the site as PowerBI and use the Business Intelligence Center as the template.

Once the site has been successfully provisioned by SharePoint, go to the site.

It will Display the default page with some instruction of BI capabilities. To add Power BI functionality to this site, click on Site Contents at the left hand side navigation.

It will show the list of available components and apps to be added, click on Power BI to add Power BI functionality to the SharePoint site.

It will then showing this big banner of Power BI, I choose to Use my own data, as I’m going to use the data from CRM.

Then it will close this modal dialog window and show the main features of Power BI (Featured Reports, Dashboards and Data Connections)

On Dashboards, click on (+ add) or drag the Excel Power View Report that we create previously.

Once uploaded, click on the tile to view the dashboard. Copy and keep the URL of this page to be used later in CRM Dashboard iFrame setup, the URL will be similar to: https://septrial.sharepoint.com/portals/PowerBI/_layouts/15/WopiFrame.aspx?action=embedview&sourcedoc=%7b85c0bf22-01a7-400e-91f3-ae91b174e110%7d

One of the coolest feature of Power BI is to set data refresh. Click on … at the bottom right of the dashboard tile to schedule the data refresh.

The refresh schedule provides intuitive scheduling functionality for us to schedule data refresh:

 

Edit: Based on the list of external data that currently supported, it seems scheduled refresh for data from CRM Online is not supported yet. So, I think this is a feature that would be nice to be supported soon. It will resulting into an error of data refresh like:

Ref: http://office.microsoft.com/en-us/office365-sharepoint-online-enterprise-help/use-external-data-in-workbooks-in-sharepoint-online-HA104054001.aspx

CRM Dashboard Setup

To get the Power BI Report to be shown in CRM’s Dashboard we could not use Personal Dashboard and we need to use System Dashboard due to iFrame Cross-Frame Scripting limitation on personal dashboard.

So, for this example, I created a brand new Solution called “Power BI Dashboard” and create new Dashboard and named it as “Lead Dashboard”

In this Dashboard, I added an iFrame component. Important: uncheck the cross frame scripting to ensure the dashboard works properly.

And then add a couple CRM charts and views to completely assemble a simple Lead Dashboard in CRM that integrated with Power BI:

Conclusion

Setting up Dynamics CRM with other Microsoft stacks on the cloud (Friends), is so much easier than deploying each individual components On-Premise. This whole example setup can be completed in a small number of hours to setup, where if these setup took place On-Premise it could take a couple of days of effort to setup. A big thanks to Microsoft cloud services, especially the CRM Online and Office365 team to keep improving the experience in their cloud services provisioning.

Special thanks for Sarah Ashton to provide the feedback before I posted this series 🙂

 

The whole series of “Preparing CRM Online + SharePoint + Exchange + Power BI Trial”:

Preparing CRM Online + SharePoint + Exchange + Power BI Trial (Part 3)

Setting Up Server-based SharePoint Integration

Dynamics CRM Online Spring’14 release introduced the new Server-based SharePoint Document Integration. How it works? Scott Durrow has discussed the detail of the new SharePoint Integration in 2 parts:

http://develop1.net/public/post/SharePoint-Integration-Reloaded-Part-1.aspx

http://develop1.net/public/post/SharePoint-Integration-Reloaded-Part-2.aspx

Before configuring the CRM side of SharePoint Integration, of course we need to setup the SharePoint site that will be used as the document location. Navigate to Office365 Admin Portal, click on Admin > SharePoint

It will open the list of SharePoint site collections, for CRM document specific I create a new site called CRMDocs to separate this documents from other SharePoint team sites.

If you would like to skip this step and configure Power BI straight away, click here to jump to Part 4.

Note: The following site creation process is applicable to both Online and On-Premise SharePoint deployment models. The difference is that by the time I’m writing this example, Server-based SharePoint document integration is only available on CRM Online. I hope this model will come down to On-Premise deployment as well to have the seamless integration between these two awesome technologies.

 

To create a new site, click on New and select Private Site Collection:

I chose Document Center from the template:

When SharePoint finished working on it… grab the URL of this SharePoint site to be used in CRM configuration.

To get started on setting up the Server-based SharePoint Integration, if your CRM Online instance has not been configured with the Server-Based SharePoint Integration or you have not dismissed the notification to enable, it will show the notification below the CRM Navigation area.

If you have dismissed this notification, you could go to Settings > Document Management > Enable Server-Based SharePoint Integration

It will open up the window to configure the SharePoint URL, copy and paste the SharePoint site URL that configured previously:

Click on Next and it will open up some validation whether the SharePoint site that we are referring is valid to be used for Dynamics CRM document repository. Important: Please read the Note and Disclaimer below the validation to ensure it does not break any of your privacy policy and once server-based integration, the older client-side integration can’t be enabled/used anymore.

Click on Next and it will show the final screen

Wait, it’s not over yet, once the server-based SharePoint Integration’s been established, we still need to configure the folder generation (see the final screen message). Navigate to Settings > Document Management > Document Management Settings

Now we will be given the selection on which entities that we want to have SharePoint Document Integration to be enabled. And fill the same SharePoint URL that provided in the Server-based SharePoint Integration setup before.

Next, the configuration screen will show the folder structure selection. There are 3 options available:

  1. Not Based on Entity
  2. Based on Entity: Account
  3. Based on Entity: Contact

The detail of this structure is described in this Dynamics CRM Customer Center page: http://www.microsoft.com/en-us/dynamics/crm-customer-center/manage-sharepoint-documents-from-within-microsoft-dynamics-crm.aspx

And Magnetism Solutions’ Colin Maitland has thoroughly draw the folder structure diagram of SharePoint’s Document Integration

http://www.magnetismsolutions.com.au/blog/colinmaitland/2014/04/27/planning-for-microsoft-dynamics-crm-2013-and-microsoft-sharepoint-2013-2010-document-management-integration-part-2

The selection of the 3 options is completely depends on how you work with CRM, some common examples:

Not Based on Entity folder structure might be good if you would like to group the documents based on each entities (flat structure, this is common in xRM implementation that not using much of CRM sales/service/marketing capabilities).

Based on Entity: Account folder structure might be best fit if you are using sales process that based on B2B scenario where businesses are your primary customers.

Based on Entity: Contact folder structure might be best fit if you are using sales process that based on B2C scenario where individuals are your primary customers.

Once decided on which folder structure option that will be used for SharePoint document integration, click on Next. The configuration will show an alert that the document libraries are being created and showing the progress of the creation:

Congratulations, you now have SharePoint Document Integration configured. Now it’s the time to see it in action. Since for this example I have selected the folder structure “Based on Entity: Account”, let’s open an existing account record and open the Documents associated view.

If it’s the first time you open the Documents associated view, it will prompt you to confirm of that particular record folder creation in SharePoint. Note: the previous folder creation during the Document Management Settings configuration is only creating the base folder structure that does not create the “child” individual folder for each records in CRM.

In case you clicked on cancel, you still be able to add the location from the associated view command button:

Once finished you could upload the documents into SharePoint seamlessly from CRM

To open the folder in SharePoint, click the OPEN SHAREPOINT command button, it will open up the SharePoint document list similar to this. Note: since I configured the document structure as Based on Entity: Account, there is opportunity folder created, as I tried to upload a document in this account’s related opportunity.

The good thing about SharePoint Integration, depends on your SharePoint Search configuration, you could use SharePoint Search to search your documents:

Tips on “Better Together”-ness between CRM, Exchange and SharePoint is the Task Synchronisation between Exchange and SharePoint. Since we have established the Server-Side Exchange Integration between CRM and Exchange Online, the tasks synced from CRM to Exchange online is synced to your Newsfeed and we will have a great timeline of the tasks on our Office365 portal.

Next, moving on to the final part, Part 4  here

Preparing CRM Online + SharePoint + Exchange + Power BI Trial (Part 2)

Setting Up Server-Side Exchange Integration

Pre-requisite:

Before setting up the Server-Side Exchange Integration, make sure that the user has been assigned with the Exchange License (similar to my previous tips here) and has the email address set up properly to ensure the smooth integration with CRM.

CRM Configuration:

On CRM instance, navigate to Settings > Email Configuration then configure the Email Server Profiles. By default CRM Online will create the Exchange Online profile if the Exchange Online is on the same Office365 instance.

Then go back to Settings > Email Configuration > Email Configuration Settings to set the CRM-wide email configuration.

For this example, I’ll use pure Server-Side Exchange Sync to sync both incoming and outgoing emails and also task, appointment and contacts. Email router obviously is another option, but since it is cloud deployment and on same Office365 tenant, it’s better to use the technologies that based on Office365 as well. Another option if you know that the people in your organisation uses Outlook desktop client, instead of the OWA, you could configure the Incoming Email, Outgoing Email, Appointments, Contacts and Tasks to use Outlook client.

Once the system-wide email configuration has been setup properly, make sure to approve and test & enable the mailboxes to ensure that the users are able to send emails, otherwise an error message similar to this will pop-up when trying to send email in CRM:

To approve and test & enable the mailboxes, navigate to Settings > Email Configuration > Mailboxes, then select the mailboxes that need to be approved and after it’s approved, Click on Test & Enable button.

Open the mailbox detail to see whether the tests successful or not:

The log of success/error will be listed up under the “Alert” view of the Mailbox record:

Now, it’s the time to try this server-sync functionality. I tried it by opening a contact with my work email address and send an email activity:

And it comes through to my desktop outlook client:

And I reply back to the email and it’s tracked on the contact’s activity conversation:

To check whether the server-side synchronisation works on the server side, open the email on Outlook OWA page:

And the tasks are also synced:

References:

http://msdn.microsoft.com/en-us/library/jj863707.aspx

http://www.microsoft.com/en-us/dynamics/crm-customer-center/set-up-email-through-server-side-synchronization.aspx

 

Moving on to Part 3 here

The whole series of “Preparing CRM Online + SharePoint + Exchange + Power BI Trial”:

Preparing CRM Online + SharePoint + Exchange + Power BI Trial (Part 1)

This article will run through the process provisioning of CRM, SharePoint, Exchange Online and Power BI trial, then will discuss on how to setup of the integration between these services as it’s been frequently asked by colleagues and in forum.

First step is registering for the CRM Online trial. In case, anyone got caught in the license assignment issue of the CRM Online trial, look at my previous blog post here. To register for CRM Online, visit: http://go.microsoft.com/fwlink/?LinkId=252780 and fill-in your details:

Tips: It’s advisable to use private browsing/incognito windows when you are signing up for any kind of Office365 services to clear out any existing Office365 sessions.

Keep moving on with the process and wait until the provisioning finished.

Once your Dynamics CRM trial provisioned properly, add the other Office365 trial (SharePoint, Exchange and Power BI) by opening the Office365 admin portal: https://portal.office.com/default.aspx

And click on Purchase Services navigation

 

Selects Trial for: Power BI for Office 365 with SharePoint Online (Plan 2) with Yammer and confirm your order.

On the admin portal dashboard it will show the status of SharePoint and PowerBI is currently being provisioned:

To add Exchange Online service, go back to Purchase Services and select the Office365 ProPlus Trial

Once the order confirmed, it will redirect back to the Admin portal and showing that it is currently provisioning the Exchange, Lync and another SharePoint Online

Wait until these services ready.

Tips: Changing the CRM Organisation Detail

A quick tips to change your CRM organisation details: By default the organisation name assigned to your CRM instance will be your company name provided during the trial sign-up and the organisation URL will be related to the username specified during the sign-up process. For demo purpose the organisation name might need to be changed to the prospect’s company name. To change the CRM organisation name:

On Office365 admin portal, click on Admin navigation and select CRM

It will open the CRM administrative functionality, such as managing your instance and sandboxes. To change the organisation name, click on Edit button on the organisation that you wish to be renamed:

Rename the Friendly name and/or the URL Name and click save:

Now notice that the CRM Online Organisation is re-named as the new one:

 

Moving on to Part 2 here

The whole series of “Preparing CRM Online + SharePoint + Exchange + Power BI Trial”:

Enable Dynamics CRM oData Query Filter for PowerQuery Performance

Recently I’ve been experimenting with the PowerBI and Excel self-service BI for Dynamics CRM, which has been discussed by CRM MVP Jukka Niiranen on: http://niiranen.eu/crm/2013/12/connecting-crm-online-odata-feed-excel-2013-power-query/ and PowerBI’s blog: http://blogs.msdn.com/b/powerbi/archive/2013/12/19/dynamics-crm-online-in-power-query.aspx last year.

Last Tuesday on Melbourne CRM User Group, Rowan Miller also excellently presented the functionality with localised content (Australian geographical data): http://www.meetup.com/MelCRMUG/events/170962872/

One thing that annoys me is the performance when connecting to CRM web service: https://(CRMServer)/xrmservices/2011/OrganizationData.svc where this endpoint will return all entities that can be queried, thus the performance of each refresh and initiation is absorbed.

Out of my experiment, theoretically if it could retrieve the data through the oData endpoint, it should be able to get the data after the filter. So, I tried to retrieve the data using the oData filter, e.g: 

https://(CRMServer)/xrmservices/2011/OrganizationData.svc/AccountSet?$filter=(StateCode/Value eq 0 and EMailAddress1 ne null) to get the Active accounts and has email address. Additionally, we could include which fields that need to be retrieved.

The performance of early initiation and data refresh is improved, as the query is handled through the oData query level, instead of pulling all data using PowerQuery.

As always, the best tool to build oData query is: oData Query Designer by CRM MVP Rhett Clinton: http://dynamicsxrmtools.codeplex.com/

Dynamics CRM 2013 SP1 – UX Update – Mostly Unnoticed

Dynamics CRM 2013 SP1 comes with lots of new good stuffs, such as the new Service Management, SLA, Timer on Case, Queue Routing, Social Listening and many more. However, for me as CRM user that always use PC and web browser to work with Dynamics CRM, the user experience for PC client quite cumbersome, especially the navigation bar that collapses immediately when my mouse pointer is navigated away from the bar. I love to have responsive mouse pointer and most of the time my mouse pointer goes out the navigation bar and closes the navigation bar, resulting multiple click to main navigation menu.

As my online instance being updated with Spring 14 release, I noticed an improvement in their UX. The navigation bar does not collapse immediately when my mouse pointer goes out of the bar.

This UX definitely gives a massive impact to my productivity. Big thanks to Dynamics CRM product team to listen to the feedback and delivered this feature!

 

Dynamics CRM 2013 SP1 Plugin Registration Tool Revamped!

Today I checked the Dynamics CRM forum to answer some of the questions there. One of the question that I tried to answer was regarding the plugin registration tool. The screen shot that uploaded by the question shows different UI of plugin registration tool that I usually use.

Then I check the latest SDK for Dynamics CRM 2013 SP1 (6.1): http://www.microsoft.com/en-au/download/details.aspx?id=40321. The SDK now provides the new Registration Tool under Tools > Plugin Registration (No longer in the “Bin” folder)

Below is the comparison of the old & new layout of the plugin registration tool:

The new Tool definitely is no longer using Windows Form Application. The new tool has different authentication method than the old tool, where we don’t need to specify the discovery URL (where we usually need to go to Settings > Customization > Developer Resource):

The Online Region Selector now helps us to construct which CRM discovery server to be connected to (where crm5 is my region):

Overall functionality of the tool does not change. There are some details that added to the new Plugin Registration tool

One thing that made me curious is the usage of the “Gear” button (usually it’s setting) that cannot be clicked. Perhaps it’s a bug??

 

 

Data Migration/System Integration using SSIS (Salesforce to Dynamics CRM Example)

Recently I had a chance to do a couple of data migration & integration projects for Dynamics CRM. On these projects, the ISV product that we chose is Dynamics CRM SSIS Connector by KingswaySoft. I got a great support from my MVP role model, Daniel Cai, during the project.

In this post, I would like to explain some basic setup, features and benefits of using the SSIS connector for Dynamics CRM. SSIS is really useful in system integration and migrating the data from legacy system to a newer one. In my sample scenario I’ll be using Salesforce.com as the data source and Dynamics CRM as target source. (This sample scenario is considering the of the situation of migrating data from Salesforce to Dynamics CRM. So, I hope this post will be beneficial for anyone that migrating data or considering to move from Salesforce to Dynamics CRM).

Note: KingswaySoft provides free SSIS connector to run under BIDS/Visual Studio, therefore it is a great tools for once-off data migration projects. For continuous processes (set the SSIS package schedule for instance), we need to buy the paid license (really reasonable price for this quality of tool + support). For pricing & purchasing info: https://www.kingswaysoft.com/purchase

Part 1: Environment Setup

1 . Visual Studio 2012 with SSDT Installed / BIDS 2008

(Note: Depends on the Production environment; AFAIK, the manifest file generated for deployment will be based on the IDE that generate the SSIS package; e.g. BIDS 2008 is for SQL Server 2008, and SSDT 2012 is for SQL Server 2012)

In this example I’m going to use Visual Studio 2012 with SSDT installed. (Download: http://www.microsoft.com/en-au/download/details.aspx?id=36843)

2. Install SSIS Connector for Dynamics CRM.

Download: http://www.kingswaysoft.com/products/ssis-integration-toolkit-for-microsoft-dynamics-crm/download

Dynamics CRM Connector help Manual:

http://www.kingswaysoft.com/products/ssis-integration-toolkit-for-microsoft-dynamics-crm/help-manual

3. Intall SSIS Connector for Salesforce.

Download: https://www.kingswaysoft.com/products/ssis-integration-toolkit-for-salesforce/download

Salesforce Connector help Manual:

https://www.kingswaysoft.com/products/ssis-integration-toolkit-for-salesforce/help-manual

 

The installers from KingswaySoft will then install the License Managers for both products (Dynamics CRM and Salesforce)

Part 2: Getting Started With “CRM” SSIS Project

For this sample, I’m using Salesforce.com developer edition. To get a free developer license: https://developer.salesforce.com/ then click on Sign-Up.

The SSDT installation for Visual Studio 2012 will install Business Intelligence Project Templates in Visual Studio. Therefore, when we create on New Project, the new Business Intelligence Projects will appear on the template list. Select Business Intellience > Integration Services > Integration Services Project:

For a fresh install on BIDS 2008, the Dynamics CRM and Salesforce connector will not appear automatically, to add the Conneciton Manager and the Toolbox components please refer to the help manuals listed above (part 1). Visual Studio 2012 + SSDT installation automatically lists all available pipeline components by scanning the system.

Setup Connection Managers

First of all, we need to create connections to both Salesforce (Source) and Dynamics CRM (Target). By Right-Click the Connection Managers box > New Connection:

Dynamics CRM and Salesforce connection will be listed amongst the connection list:

  • Create Salesforce Connection Manager:

The connection manager will open up the connection window that consist of Username, Password and Security Token to Salesforce org. To test whether connection has been successfully configured, click on “Test Connection” button. Then click OK to create the Salesforce Connection Manager.

Note: Salesforce connection is highly secured and they implemented Security Token for any API connections that came from outside trusted IP ranges. To reset the security token (in case not provided initially):

  • Create Dynamics CRM Connection Manager:

The conncetion manager will open up the connection window that consist of Authentication Type, Discovery Service URL (please note the discovery service only need the first part of the URL. Without the following “XRMServices/2011/Discovery.svc”), Service Endpoint, SDK Client Version, Username, Password and Organisation Name. To test whether connection has been successfully configured, click on “Test Connection” button. Then click OK to create the Dynamics CRM Connection Manager.

Note: (As usual) to get the Dynamics CRM web services URLs, navigate to: Settings > Customizations > Developer Resources

Build SSIS Control Flow & Data Flow

To start building the SSIS package, it starts with the Control Flow and Data Flow. For this example I’ll transfer Lead and Account object from Salesforce to be mapped to Lead and Account Entity in Dynamics CRM. To achieve that: drag 2 Data Flow Task components into the Control Flow and named it with meaningful name, example:

Then drill down to the underlying data flow task by double click the task in Control Flow. Drag Salesforce Source and Dynamics CRM Destination component and link them:

Double Click Salesforce Source to configure the Lead data source. And click on “Columns” to select the required columns as part of the data source. Then click OK:

Double click Dynamics CRM Destination to configure the destination and field mappings from Salesforce:

Note: I created a custom text field with 18 character to store the Salesforce id as reference (FYI: Salesforce ID is generated in either 15 or 18 length format, not GUID).

Do the same with the account and run the project:

Confirm that the data are transferred from Salesforce to Dynamics CRM:

Bonus Part (Part 3): Deployment Preparation and Package Configuration

Configuration

In Visual Studio 2012 + SSDT, we will not find “Package Configuration Wizard” in SSIS when we right click in Control Flow (this is the way to prepare the configurations in BIDS 2008) as the 2012 version introduced the new model for configuration and deployment called the Project deployment model. As part of that change, the old way of doing configuration (environment, xml, parent package, registry and table) is not an option. In the project deployment model, you get parameters and environments. Therefore to create the configuration in the “classic” way, right click on the solution and click on “Convert to Package Deployment Model”:

Now the package configurations option is back:

Since we have converted the deployment mode, the deployment .manifest file can be generated through the solution properties and setting the “Create Deployment Utility” to True:

 

And as the project being built; The deployment files are generated:

Microsoft Dynamics CRM Spring 2014 Release Preview Guide

Following up the excitement of last night presentation about the key new features of Dynamics CRM 2013 in Q2 2014 release in Melbourne Dynamics CRM User Group by Mark Smith (@nzCRMguy). Microsoft also released the release preview guide.

This Q2 2014 release is highlighting lots of really amazing new features:

  • Microsoft Dynamics Marketing – major enhancement for marketing: Drag and drop visual Campaign Designer, Lead lifecycle management, Marketing Personalised Homepage, Scalable Email Marketing, Power BI for Marketing, Improved Sales & Marketing Connector (This Dynamics Marketing enhancement requires an extra Office 365 Procurement).
  • Updates on Sales Automation – Insights (puts real-time company and contact information from 30,000 sources into Microsoft
    Dynamics CRM), CRM Tablet App Enhancements
  • Customer Service – USD (Unified Service Desk – not US Dollar), Enterprise Case Management (SLA & entitlements, dynamic routing, KPI, case merge, parent child case, automated case creation, Define Status Reasons, Social Care, Service Management), CRM Tablet app –  Case Management.
  • Parature – Multi-Channel Care: portal, facebook portal, mobile app, real-time chat, Knowledge Management
  • Social Listening – Listen & Analyze, Monitor & Respond, Social Insights in Microsoft Dynamics CRM
  • Sandbox Environments (2 types of sandboxes are available: Minimal Copy & Full Copy) with the abilities: reset Sandbox to Factory Settings, Sandbox snapshot. On top of the sandbox environment, Admin also has the access to the New CRM Online Admin Center.

Aside from the new front-facing features there are also enhancement on the platform capabilities that enabling organizations to build, test and configure CRM deployments of all sizes.

Tooling:

  • CRM Package Deployment Tool
  • CRM Configuration Migration Tool
  • Updated Plugin Registration Tool
  • Visual Studio Toolkit enhancements
  • More PowerShell Support
  • New Windows Client API ( Microsoft.Xrm.Tooling.xxxx )

Extensibility:

  • OAuth discovery specification to support ISV/office clients
  • GROUP AND/OR for workflows

Scale: Scaling Improvements in Async processing to handle very large workloads.

And again adding more compatible environments:

  • Windows 8.1
  • Internet Explorer 11
  • iOS7 Safari on iPad (web application)
  • iPad Air using Safari (web application)
  • Windows Server 2012 R2 (CRM server)
  • iPad Air using CRM for Tablets

Full details can be found on: http://go.microsoft.com/fwlink/p/?LinkID=395005

Once again, it is definitely an exciting journey for Dynamics CRM, Dynamics CRM is moving really fast and looking forward for the landing of this massive release.

 

 

Dynamics CRM 2013 – New Features Limitations

Dynamics CRM 2013 new features: Business Process, Business Rule and Synchronous Workflow are a major leap from CRM 2011. These nifty features added a lot of benefits to the selection customisation tool. For example, by using Business Rule, we could eliminate some javascript form scripting that might require more time to test. And Synchronous Workflow might eliminate plug-in development that sometimes quite tricky to test, especially on Online deployment.

In spite of the benefits that we could utilise from these new features, there are some limitations that we might need to aware of, especially in designing the best solution in terms of maintainability, performance and the time effort that need to be spent.

Business Process
In designing business process there are maximum number of processes, stages, and steps:

  • The maximum number of activated business process flows per entity is 10.
  • The maximum number of stages in each process is 30.
  • The maximum number of steps in each stage is 30.
  • The maximum number of entities that can participate in the process flow is 5.

Synchronous Workflow
With Synchronous Workflow, user could see the results by the time the record is saved (in CRM 2013 form, the changes that made are saved automatically every more or less 30 seconds interval or by clicking the TINY save button at the bottom right of the form), compared to javascript, where user could see the changes straight away.

Planning synchronous workflow might be similar to planning synchronous plugin, try as much as possible eliminate the long-waiting process to be registered as synchronous one for better user experience.

Business Rule
This is one of the killer features of the new Dynamics CRM 2013, but there are some limitations. And for some occasion, it will determine our conclusion whether we should go with javascript/plugin/workflow/business rule.

With current release, as far as my trial-and-error experiment with business process, we could only have one condition and one action. So it is like a single if statement:


If [this condition]
Then do [this action]

Meanwhile, if-else or switch-case scenario is not available

If [condition is A]
Do [action A]
Else if [condition is B]
Do [action B]
Else if [condition C]
Do [action C]
Else
Do [default action]

To achieve this, we need separate business rules and might want to check whether one rule is unique to the other rules, which is quite messy for a solution.

If [condition is A] and [not condition B] and [not condition C]
Do [action A]
And so on…

Business Rules are Entity-Bound
The fields that can be used to build the business rule are only available from the entity that the business rule is attached to. So there are limitations when we need to access fields/condition from related entities (child/parent entity). To achieve this, we should choose either workflow/plugin/javascript path.

So far these are my findings on the limitation of the new features in Dynamics CRM 2013. In future post, I might add any additional limitations Dynamics CRM 2013 or Microsoft might release updates on these limitations to make Dynamics CRM 2013 as the best platform for xRM implementation.

Solution file (.sln) lost CRM Developer Toolkit Instance

I’ve encountered this issue several times (especially when we are check in to TFS), that the solution file is not merged properly, and for some reason the developer toolkit bind is removed.

 
To fix this, edit .sln file using notepad/any text editor, then add:
 
GlobalSection(CRMSolutionProperties) = preSolution
  SolutionIsBoundToCRM = True
EndGlobalSection​
 
In Global, after:
 
GlobalSection(TeamFoundationVersionControl) = preSolution

 

MS CRM 2011 – Hiding a Group of Ribbon on Specific State

Today I come up with another task to only show the button on a group only when the record has already been saved.
After some times reading at the CRM 2011 SDK documentation and some time searching for clue, I found a solution.


The above pictures are the desired result. The button should be shown after the record has been saved.

So the changes to the Ribbon XML can be like this:

<RibbonDiffXml><CustomActions>  <CustomAction Id="Mscrm.ISV.campaignresponse.CustomGroup.MaxSize.CustomAction" Location="Mscrm.Form.campaignresponse.MainTab.Scaling._children" Sequence="150"><CommandUIDefinition>  <MaxSize Id="Mscrm.ISV.campaignresponse.CustomGroup.MaxSize" GroupId="Mscrm.ISV.campaignresponse.CustomGroup.Interaction" Sequence="21" Size="LargeLarge" /></CommandUIDefinition>  </CustomAction>  <CustomAction Id="Mscrm.ISV.campaignresponse.CustomGroup.CustomAction" Location="Mscrm.Form.campaignresponse.MainTab.Groups._children" Sequence="115"><CommandUIDefinition>  <Group Id="Mscrm.ISV.campaignresponse.CustomGroup.Interaction" Command="Mscrm.Enabled" Title="Interaction" Sequence="85" Template="Mscrm.Templates.3.3" ><Controls Id="Mscrm.ISV.campaignresponse.CustomGroup.Controls">  <Button Id="Mscrm.ISV.campaignresponse.Form.Interaction.Button.AddGuest"Command="Mscrm.ISV.campaignresponse.Form.Interaction.Command.AddGuest"ToolTipTitle="Tip"ToolTipDescription="Add Guest"LabelText="Add Guest"Alt="Add Guest"Image16by16="/_imgs/ribbon/AssignRoles_16.png"Image32by32="/_imgs/ribbon/AssignRoles_32.png"TemplateAlias="o1" /></Controls>  </Group></CommandUIDefinition>  </CustomAction></CustomActions><Templates>  <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates></Templates>  <CommandDefinitions>  <CommandDefinition Id="Mscrm.ISV.campaignresponse.Form.Interaction.Command.AddGuest"><EnableRules></EnableRules><DisplayRules>  <DisplayRule Id="Mscrm.ISV.campaignresponse.CustomGroup.Interaction" /></DisplayRules><Actions>  <Url Address="$webresource:pages/addGuests" PassParams="true"/></Actions>  </CommandDefinition>  </CommandDefinitions><RuleDefinitions>  <TabDisplayRules />  <DisplayRules><DisplayRule Id="Mscrm.ISV.campaignresponse.CustomGroup.Interaction">  <FormStateRule State="Create" InvertResult="true" /> <!-- THIS IS THE TRICK --></DisplayRule>  </DisplayRules>  <EnableRules /></RuleDefinitions><LocLabels /></RibbonDiffXml>

Add Button to Ribbon on MSCRM 2011

Today I got a task to put a button on Ribbon Bar in Microsoft Dynamics CRM 2011.
I’m new to 2011, even I only learned CRM 4 about 5 months ago.

I can’t find good references on the SDK, luckily I found Gareth’s Tucker Blog that discuss into detail how to create a button.

Hopefully it helps us, developers 🙂

CRM 4.0 Deployment Problem – web.config cannot be loaded properly

Today I developed an application to be deployed in ISV. However as per request I couldn’t use the default organization,
so I need to change the url from:
http://(server-name)/ISV/(app-name)
to:
http://(server-name)/(organization-name)/ISV/(app-name)

The problem is my current web.config couldn’t be loaded properly. I got empty configuration even I use existing configuration from other project that use the same CRM.
After a chat with my work mate, he come accoss to Janne Mattila’s blog and I found the solution.

That’s a relief, yet not the end of the problem. I have a project that contains all CRM functions there. The solution above only applicable if I use those functions in one project, unfortunately I use it accross several projects.
So after some time and a chat with my work mate again we come into a solution:

1. I create a function in the config class that I use for the projects

public static void LoadCustomConfigFile()
{
// open the configuration on this specific path
Configuration configuration = WebConfigurationManager.OpenWebConfiguration("/ISV/");

// get all configuration that starts with "Crm" keyword - use "Crm" keyword for Crm related settings
var crmConfigurationKeys = configuration.AppSettings.Settings.AllKeys.Where(k => k.StartsWith("Crm")).ToList();

foreach (var crmKey in crmConfigurationKeys)
{
ConfigurationManager.AppSettings.Set(crmKey, configuration.AppSettings.Settings[crmKey].Value);
}
}

2. On page load event in the ISV application

protected void Page_Load(object sender, EventArgs e)
{
// Load custom config
Config.LoadCustomConfigFile();

// do the rest of page load event
}