Real Time Workflow and Plugin, Which One is Executed First?

Last weekend when I was preparing my presentation slide for the upcoming Dynamics CRM User Group regarding some gotchas in plugin development and with a short discussion regarding Real Time Workflow, there is a question in mind: If there is a Plugin and Real Time Workflow that registered on the same event, for example on update of field A on Contact entity, which one that triggered first? I’ve tried to find Microsoft’s documentation and could not find it, so in case anyone could point out the article/documentation, please let me know.

So to answer my own question, I setup a simple Real Time Workflow to update ‘jobtitle’ field to ‘Workflow’ on Contact entity every time I change the first name. And a plugin to update ‘jobtitle’ field to ‘Plugin’ on Contact entity every time I change the first name. To test this method, I did a bulk edit on contact record to change all their first name. And the result is… Plugins are executed first, then the Real Time Workflow. This is a conclusion of the test, as all of the records that I just bulk-edited has the value of Workflow, which mean the value specified will be the one that executed later.

Workflow

I hope this help us in designing the solution with multiple event-based processes. And to manage these execution order there’s a plugin for the famous XrmToolbox here: http://mscrmtools.blogspot.com.au/2014/04/new-xrmtoolbox-plugin-synchronous.html

Note: I personally would prefer not to mix Plugin and Real Time Workflow together to avoid confusion by putting the custom process that handled by the plugin to custom workflow activity and execute that custom workflow activity within the Real Time Workflow. However, there might be a case where the solutions are developed by multiple vendors and this kind of scenario could happened.

 

 

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.

Power_Query

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:

Query_OData_Feed

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.

Sign_In_Office365

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

PowerQueryProcessing

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

PowerQueryResult

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)

Power_Query_Choose_Columns

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

Arranged_Close_&_Load

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

Query_Being_Reloaded

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

Power_Query_Load_to_Data_Model

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

Power_Pivot_Manage_Data_Model

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.

Mark_it_As_City

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

PowerView

It will create a basic Power View dashboard similar to:

Power_View_First

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:

Lead_Dashboard

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.

SharePointAdminPage

Click on New > Private Site Collection

NewPrivateSiteCollection

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

PowerBI_Site_Setup

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

Power_BI_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.

Power_BI_Setup

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.

Site_Content_Power_BI_Apps

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.

PowerBI_Landing

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

PowerBI_First_Time

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

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

On_Power_BI

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.

Excel_Schedule_Data_Refresh

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

Refresh_Schedule

 

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:

Power_BI_Power_Query_Error

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”

Power_BI_Solution

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

Dashboard_iFrame

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

PowerBI_Dashboard_on_CRM

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

SharePointAdminPage

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:

NewPrivateSiteCollection

I chose Document Center from the template:

DocumentCenterSharePoint

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

SharePointURLForDocs

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.

EnableSharePointServerSide

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

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:

Server_Side_Sharepoint_Setup

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.

SharePointServerSideValidation

Click on Next and it will show the final screen

ServerBasedSharePointFinalised

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

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.

EntitiesInDocumentManagement

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

SharePoint_Folder_Structure

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:

Document_Libraries_Are_Being_Created

DocumentNotBasedOnEntity

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.

OpenDocumentsOnAccount

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.

ConfirmFolderCreation

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

Add_Document_Location

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

Documents_Uploaded

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.

Document_in_Sharepoint

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

SharePoint_Search

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.

Newsfeed_Tasks_Sync

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.

EmailAddress

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.

Exchange_Online

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

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.

Email_Configuration_Setting

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:

MailboxDisabled

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.

Mailboxes

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

MailboxConfigurationTestSuccess

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

Mailbox_Alerts

TestMailboxSuccess

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:

Sending_Email

And it comes through to my desktop outlook client:

EmailSent

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

EmailTracked

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

OWAIncomingEmail

And the tasks are also synced:

Task_Sync

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”:

Converting Single Line Text to Multi-Line Text Using CRM SDK’s Configuration Migration Tool

It’s been quite often that I’m requested to change the text field from single-line to multi-line or vice-versa. To achieve this usually I would suggest the creation of a brand new multi-line text field with different names and the other interfaces/integration that referring to the single-line field need to be adjusted to refer to the new field.

Today, I made a short experiment to change the text field type of a field in CRM and found a way to backup the data of the text field and reload the data once the new multi-line field with the same name using the SDK’s Configuration Migration Tool.

To get started on how to use the tool, I’ve posted a simple post on how to use the tool here or more detailed one from Jukka here.

Disclaimer: USE THIS METHOD AT YOUR OWN RISK. PLEASE BE AWARE THAT ANY INFORMATION YOU FIND MAY CAUSE DATA LOSS, PLEASE TAKE A BACKUP OF YOUR DATA BEFORE PROCEEDS.

First this is the sample of a single line text field on account entityShortText

Open the Configuration Manager tool, select Create schema option and continue with login. Once logged-in and fetched the CRM metadata, include the fields that going to be converted:
Export

Then continue with Save and Export, save the schema and the exported zipped file of the record.

Once, the export finishes, delete the field from the entity and create the field with the same name with type of Multi-Line text (don’t forget to publish the customisation):
LongText

Then go back to the Configuration Manager and select Import Data option and load the previously extracted zip file:
Imported

Now I have the multiple-lines text field with the same field name without losing previous data
MultipleLines

Notes: I tested this method on other data types and apparently the schema validation do not work.

I hope this helps!

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.

updated

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!

 

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)

ssdt visual studio 2012

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)

Kingswaysoft License Manager

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:

SSIS 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:

ConnectionManagers

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

ConnectionManagersCRMAndSF

  • 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.

SFConnectionManager

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):

SalesforceResetSecurityToken

  • 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.

CRMConnectionManager

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

discovery Server

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:

control flow

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:

DataFlowUnconfiged

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:

SalesforceSource

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

CRMDestination

SampleCRMMapping

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:

SuccessRun

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

LeadTransferred

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”:

Package Conversion

Now the package configurations option is back:

packageconfig

Config

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:

Deployment

 

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

DeploymentFolder

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.

 

 

Awarded as Dynamics CRM MVP – The best April Fool Day Pranks ever!

First of all, it is such an honor to receive the MVP award from Microsoft this year. It’s all by grace, as there are many people who are more experienced than me in Dynamics CRM.

Yesterday morning when I woke up, I received this big email from Microsoft:

Image

I still could not believe it, as the previous day was April Fool Day where some of my friends teased and set up some pranks on me. Including Google, where they put Pokemon Challenge on Google maps.

Image

I still could not believe it until I click the links in the email, enter the MVP detail and bam! It’s real! I didn’t expect it, even though there was someone from Microsoft asked some contact information a couple weeks before.

So, within this post I would really express my gratitude to God, as it is completely a MIRACLE for me, Microsoft, for this amazing award, Mark Smith (@nzCRMguy) and CP (Microsoft) for allowing me to participate as Melbourne Dynamics CRM User Group Committee, Brett Yorgey, Brent Howard, Felix Hariyadi and JayThom team for introducing me to Dynamics CRM, Sarah Ashton and CRM Team in Oakton who supports me until this day, and of course, my beloved wife that supports me all the time 🙂

I hope my future experience and sharing could continue to contribute to the Dynamics CRM users.

My new MVP profile: https://mvp.microsoft.com/en-us/mvp/Andre%20Margono-5000785

Image

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.