Wednesday, February 22, 2017

Organization Insights solution released for Dynamics 365

Organization Insights for Dynamics 365 is a new solution that provides insights into the usage, activity and quality of service for your Dynamics 365 (online) instance. It has been available in preview since a couple of months and is currently compatible with December 2016 Update for Microsoft Dynamics 365 (online) 8.2 – to use the Organization Insights solution, download it from AppSource and install it in the instance you want to monitor using this download link https://appsource.microsoft.com/en-us/product/dynamics-365/mscrm.04931187-431c-415d-8777-f7f482ba8095?tab=Overview  Although the documentation still marks it as preview -  Preview feature: Use the Organization Insights dashboard to view metrics about your instance – the Office 365 message center states that it has been released  on the 8th of February.

Getting started with Microsoft Flow and Dynamics 365

Microsoft Flow is a cloud-based service that  helps non-developers work smarter by allowing them to automate workflows across applications and services such as Office 365, Dynamics 365 but also Salesforce, Slack,etc... It is comparable with other tools such as Zapier and IFTT. Flow is part of Microsoft’s Business Application Framework which also includes PowerApps and which can be characterized as a low code application platform (See New development platforms emerge for customer-facing applications - Forrester research and low-code development platforms: the answer to soaring business application needs on this interesting trend). Microsoft Flow is positioned within the Business Application Framework as a next-generation integration layer for the different Microsoft clouds (Azure, Office 365 and Dynamics 365)

Microsoft Flow provides building blocks for integrating with external services and systems both from Microsoft such as SharePoint, OneDrive for Business, SQL Server, Azure components (Blob storage, Queues) but also from external vendors such as Salesforce, GoToMeeting, Instagram, etc … – there are currently 90+ different services available and new services are added on a weekly basis. Some of these services are only available in a premium plan such as Salesforce, Common Data Service, Citrix Gotowebinar and Citrix Gotomeeting, etc … whereas other services are also available in the free version of Flow.


Microsoft Flow provides a visual design surface within a browser (but mobile clients are also available for iOS and Android) where power users can add multiple actions which interact with services/applications, triggers (events that start a flow), conditions (allow for branching), loops, and more … I strongly recommend you to browse through the documentation Get started with Microsoft Flow or use the Microsoft Flow – Guided learning to get started.

You can either build a flow from scratch or you can start from one of the templates –  each template flow is designed for a specific purpose and is ready to be used,  you just have to configure the template. It is however also possible to add additional processing logic within flows created based on these templates.  Microsoft Flow allows you to configure a number of interesting scenarios – you should definitely check out Dive into Microsoft Flow, create automated workflows between your favorite apps and services (Ignite 2016 recording) which shows you examples such as:
  • Auto archive e-mail attachments to a SharePoint document library
  • Sent follow up reminders when new leads are created in Dynamics 365
  • Send mobile notification when a service goes down
  • Collect social media mentions (e.g. twitter) of your company or its products
From a Dynamics 365 perspective there are currently 5 triggers and 16 actions available which allow to build quite advanced scenarios such as outlined in  Create smarter flows using Microsoft Cognitive Services LUIS but Flow can also help you with things which might seem simple or straightforward from a business perspective but which would require you to write code such as No code approach Delete attachments from corresponding SharePoint folder when a record is deleted in CRM using Microsoft Flows or Quick surveys using Microsoft Flow (the only limit is your imagination … )



An important thing to understand is that Microsoft flows always run with the connection details that you provided when configuring the flow. So flows will always have the same permissions as the credentials that you use to create e.g. when you create a connection to Dynamics 365 for Sales and use your own login and password, it is your credentials which are used to execute the actions against CRM Online. A flow can never have escalated permissions.

Microsoft Flow is powered by Azure Logic Apps – every flow is actually a Azure Logic App which runs in a subscription which is managed and maintained by Microsoft. So you can basically use the same APIs, functions and designer in Microsoft Flow as in Azure Logic Apps. Microsoft Flow however provides a more-business oriented user experience.  An interesting scenario is where you call Azure Logic Apps from Microsoft Flow or vice versa using HTTP cards, but also one Flow call another Flow as well as one Azure Logic App calling into another Azure logic App. I will look at some examples of  Azure Logic Apps in future blog posts. Both Flow and Azure Logic Apps often allow you to solve the same problem but they are targeted at a different audience and sometimes subtle differences will determine your choice as outlined in Considerations on using Microsoft Flow or Logic Apps to sync documents

Microsoft Flow is available in a number of different plans going from a free version with 750 runs per month up to a Flow Plan 2 with 15.000 runs. The paying version also allows access to a number of premium connectors such as Salesforce, Common Data Service, Citrix Gotowebinar and Citrix Gotomeeting, etc … For up to date pricing as well as the difference between the different versions check out https://flow.microsoft.com/en-us/pricing/



To conclude, some points of attention, Microsoft Flow is fairly new and the product still has its occasional hiccups – both within the design surface as well as in execution of flows. Another thing to remember is that while the number of Flow executions might seem quite large I would recommend to define specific governance around the usage of it since currently no flow usage across your company is not available (but on the roadmap)

References:

Thursday, February 02, 2017

Dynamics 365 monthly reading list 02/02/2017

Apparently the weekly Dynamics 365 weekly reading list is slowly evolving into a monthly one but still enjoy:

Thursday, January 19, 2017

Power BI and Microsoft Dynamics 365 one year later

It has been a year since I last wrote a blog post about Combining Microsoft Dynamics Online and Power BI – so it is time for a little update since a lot of great new features have been released in the last couple of months which are also interesting for Dynamics CRM.
The CRM Online 2016 spring release introduced the release of specific content packs for Dynamics CRM Online  – the Dynamics CRM Online Sales Manager and Service Manager content packs include a number of predefined key metrics and key charts and can be used as inspiration to build your own reports. Recently Microsoft also made the PBIX file (Power BI Designer files) available for download so that you can now also include your own custom entities and adapt these content packs to your specific needs – see Use Power BI with Microsoft Dynamics 365 for the links.
Another interesting update was the release of support for R in June 2016 – see R for the masses with Power BI.  To get started with R in Power BI – you can download the Power BI sample with correlation plot in R which uses the rrplot package. Power BI Desktop does not include, deploy or install the R engine. I installed RStudio, the sample Power BI project uses the corrplot package, so you will first need to install this package using the R console prompt in RStudio.


Definitely check out the Create Power BI visuals using R guide (Don’t forget to take at the current limitations in R at the end of the post) and Getting started with R Visuals in Power BI to get started – afterwards you definitely need to take a look at the Welcome to the R script showcase Power BI Gallery to see some interesting examples that you can use.

Listed below is an example of how you can use decision trees in Power BI with R to visualize the probability of something you want to estimate, based on historical data – the sample project uses data about the survival statistics of passengers of the Titanic. The decision tree classifier automatically finds the important decision criteria (or features) to consider which can help you can in making decisions. Decision trees are a form of multiple variable (or multiple effect) analyses. An example of a multiple variable analysis is a probability of sale or likelihood to respond to a marketing campaign as a result of the combined effects of multiple input variables, factors or dimensions.



In July 2016, Power BI Embedded also reached general availability – Power BI embedded allows ISVs to provide the richness of Power BI to customers within their specific multi-tenant applications. This can for example be an Azure hosted web application in which an ISV wants to embed fully, interactive reports built using Power BI. For more information check out Your data. Your visualizations. Your way – with Power BI – which explains the difference between Power BI Embedded and standard Power BI – as well as What is Microsoft Power BI Embedded? Power BI also allows you to embed Power BI tiles in Dynamics 365 dashboards – see Display Power BI visualizations in Dynamics 365 dashboards or  Add or Edit Power BI visualizations on your dashboard for some walkthroughs.



Another important change is the endpoint that you need to use when connecting Power BI directly to Dynamics CRM 365 – from Dynamics CRM version 8.1 onwards (so also for Dynamics 365) you should use the OData endpoint URL and not the OrganizationService SOAP service even though the dialog still shows it as an example – the documentation Use Power BI with Microsoft Dynamics 365 (Technet) has already been updated for this change.



To get an overview of what has been released and what is under development around Power BI for Dynamics 365  - you can also take a look at the roadmap for the updates which have been recently released or which are under development - https://roadmap.dynamics.com/

References:

Wednesday, January 11, 2017

Organization Insights for Dynamics 365

This new Organization Insights solution provides you with a number of interesting insights and metrics about your CRM instance (aka organization) such as entities which are being used, the storage used by different tables, user activity, system job activity, plugin statistics and API call statistics.  It currently is available as a preview feature in the December 2016 update can be installed separately from the AppSource . This solution provides more detailed information than the Organization Insights dashboard which is included by default in a Dynamics 365 December 2016 Update instance.


One of the new interesting dashboards which is part of this soltuion is the storage dashboard which provides information about the storage used by your tenant and the different CRM instances (or organizations). This dashboard displays total storage and storage per tenant, a breakdown of the top 10 largest tables by size and row count in the current instance and information about common tables  - tables which contain records which can be linked to different types of records such as attachments, audit logs (auditbase) and asyncoperationbase (this table tracks your asynchronous processing job execution (system jobs, workflows, plug-ins, etc). 

A Dynamics 365 Plan 1 application subscription includes by default 10 GB database storage and additional storage is added at a rate of 5GB for every 20 full users – storage is accrued but there is a technical limit of 5TB (For more details see the Dynamics 365 Licensing Guide). It also is possible to purchase additional storage at a price per GB/month.  For those of you who are still using Dynamics CRM Online licenses, will have 5 GB standard storage and 2.5 GB extra per 20 professional users (capped at 50 GB - for more details see the Dynamics CRM Online Licensing Guide)



So it is important to analyze and clear space in Dynamics 365 as outlined in this post – which also suggests a free Dynamics CRM Online  & Dynamics 365 storage space analyzer solution that you can install.


Reference:

Sunday, January 08, 2017

Using Azure Service Bus and Dynamics 365

You can connect CRM Online (Dynamics 365) with Azure Service Bus by coupling the CRM event execution pipeline to the Microsoft Azure Service Bus. This connection lets the data that has been processed as part of the current CRM operation to be posted to the bus. From here, other line of business applications can consume these messages from Service Bus instead of directly talking with CRM. This is a commonly used hybrid integration scenario.

As of CRM Online Update 1 (Spring release – see KB 2925359 Microsoft Dynamics CRM Online releases for an overview of the different release) – the recommended way of integrating Dynamics CRM Online and Azure Service Bus is using Shared Access Signature authentication.This blog post still uses ACS(Access Control Service) authentication – in a next post I will outline the differences when using SAS (Shared Access Signature) authentication.

Dynamics CRM Online is by default pre-configured for Microsoft Azure integration. You will however still need to proceed with the following steps:
  1. Make sure that you have the Microsoft Azure PowerShell module installed – if you have multiple subscriptions linked to your login – check out  Quick tip – using Azure PowerShell with multiple subscriptions
  2. Create a Service Bus Namespace as outlined in Walkthrough: Configure Microsoft Azure ACS for integration with Dynamics CRM (https://msdn.microsoft.com/en-us/library/jj863635.aspx )
  3. Add extra configuration settings on Azure Service Bus :
    1. Create a service identity (issuer)
    2. Create a rule group and rules
    3. Configure the scope
  4. These settings can be configured in two different ways
    1. Follow the steps outlined in
    2. Use the plugin registration tool to add the extra required configuration using the (Save & Configure ACS) screen when you register a new endpoint. I will use this option since this is the simplest from a developer perspective – before you can use this screen make sure that you perform the next two steps. First you will need to download the certificate from Dynamics CRM Online – it can be found underneath Settings>Customizations>Developer resources screen
      Next you will need to open Azure Portal (I will be using the classic portal https://manage.windowsazure.com since Azure Service Bus management is still in preview on the new portal) and select the connection information from the Azure Service Bus namespace that you created in the first step. Copy the default key. 
You have now completed all the preparation, so now you can proceed with the configuration within CRM. You will need to create a service endpoint configuration in CRM to allow it to talk to Azure Service Bus. A endpoint is a commonly used term in enterprise integration patterns – (See Introduction to messaging endpoints -  for more details). Endpoints in CRM are used to connect CRM to a messaging system so that it can send and receive messages. As already mentioned, CRM provides standard functionality to integrate with Azure Service Bus as a messaging system.

In this example we are going to integrate CRM with a persistent queue and we are going to leverage the built-in Azure plugin in Dynamics CRM. Open the plugin registration tool and select Register New Service EndPoint.


You should see the screen below for registering a new service endpoint – if you get another screen you are most likely using a newer version of the CRM SDK – and you switch to the CRM 2015 SDK or the first build of the CRM 2016 SDK (December 2015 release). 



Before Dynamics CRM Online can post on the queue you will need to create the queue which was specified in the path “jopx/demo”. You can write code for this or you can simply use a tool such Service Bus Explorer - https://code.msdn.microsoft.com/windowsapps/Service-Bus-Explorer-f2abca5a to create the queue (or you can create the queue from within the Azure Management Portal)
Click on Save & Configure ACS to add the necessary configuration data as outlined before. Here you will need to enter the following information:
  • Fill in the management key that you copied over from the Azure Service Bus connection information
  • Select the certificate file that you downloaded from your CRM Online instance
  • Fill in the issuer name – crm4.dynamics.com (This information is also copied over from the Developer resources screen in Dynamics CRM)
When you click Configure ACS – information will be logged on the same screen make sure that you don’t get any errors.


Finally, you will need to define for which CRM entity you want to couple the event execution pipeline to the Microsoft Azure Service Bus. The native CRM Azure-aware plugin allows you to post the data that is being processed as part of the current CRM operation to the queue. It does this by transferring the information in the form of a serializable RemoteExecutionContext object. Registering the Azure-aware plugin is the same as registering any plugin for CRM. Use the plug-in registration tool and right-click on the service endpoint that you just created, then select Register New step to select the “Create” message and the “Contact” entity.


To test it out you simply create a new contact record and you should see that a new entry appears in the CRM System Jobs. After creating a new contact you should have an entry in the CRM System Jobs:  Settings > System Jobs,  indicating that the asynchronous plugin posting the create to Azure has been executed. You can also see the message posted on the queue in the Azure Portal.


Monday, January 02, 2017

Dynamics 365 monthly reading list 12/31/2016

Happy new year to all of you Dynamics 365 geeks and welcome to a new edition of the Dynamics 365 monthly
Previous reading lists:

Wednesday, November 23, 2016

Dynamics 365 weekly reading list 11/23/2016

The big storm of announcements about Dynamics 365 has passed but still some interesting tidbits of information and new tools were released in the previous weeks:

Previous edition – Dynamics 365 weekly reading list 11/05/2016

Tuesday, November 22, 2016

Ignite 2016 slidedeck and video downloader

 

Microsoft Ignite is one of the biggest Microsoft conferences in the year with over 700 different sessions over the course of 5 days so it is quite impossible to attend all sessions. Luckily Microsoft provides a recording of most of the sessions on Channel 9 | Microsoft Ignite 2016 and for those of you who would like to get an offline copy of all the different sessions as well as the PowerPoint decks – take a look at  the Powershell script – Ignite 2016 slidedeck and video downloader  - if you want to download only the powerpoint decks you can use the command  -  .\Ignite2016Downloader.ps1 -NoVideos -DownloadFolder d:\Ignite2016 ,  this is already 12,5 GB.

Here’s my watchlist for the next couple of weeks:

Saturday, November 05, 2016

Dynamics 365 weekly reading list

 

Welcome to the first edition of the Dynamics 365 weekly reading list – with the official “release” of Dynamics 365, Microsoft took an important step in providing an integrated cloud platform which combines CRM and ERP. Follow this blog for your weekly reading list about the Dynamics 365 platform.

Monday, October 31, 2016

Fixing Visual Studio projects created with CRM Developer Toolkit

If you try to open a Visual Studio 2012 CRM plug-in or workflow activity project which was created with the CRM Developer Toolkit in Visual Studio 2013 or Visual Studio 2013 you will notice that it does not open and that it states – “This project is incompatible with the current edition of Visual Studio”. Unfortunately the CRM Developer Toolkit has not been updated to work with the newer versions of Visual Studio. There is however an easy fix for this -  open the csproj file of the Visual Studio project in Notepad++ – look for the ProjectTypeGuids line and simply delete it. This fixed it for me with Visual Studio 2015 – if you encounter other errors – take a look at How to remove dependencies to CRM Developer Toolkit

Tags van Technorati: msdyncrm,Dynamics+CRM,Visual+studio,Microsoft,CRM,development,c#,csharp

Thursday, October 13, 2016

Creating a new Documents view in CRM to display SharePoint documents

Integration between SharePoint and Dynamics CRM allows you to link documents to Dynamics CRM entities but the documents will be stored in SharePoint instead of the CRM database (See Using SharePoint Online to store Dynamics CRM Online Documents for more information). This allows you to take advantages of the strenghts of both platforms but one of the things missing is how you can surface metadata/document properties from linked documents in Dynamics CRM.

In  Showing SharePoint document properties in Dynamics CRM views I  already explained how you can adapt the standard Associated Documents view to show extra document properties from documents stored in SharePoint document libraries. In this post, I will explain how you can create new views for the SharePointDocument entity.



If you just create a new view and try to make it work out of the box you will see that this not works. You will need to export your CRM solution. You will notice that the exported zip file contains three XML files.

  • solution.xml : Contains the details of the solution package including publisher information and a listing of any missing or key dependencies
  • [Content_Types].xml : standard Microsoft export file that identifies the content of the solution. The [Content_Types].xml file type is part of the Open Packaging Conventions (OPC) standard. For more information, see OPC: A New Standard For Packaging Your Data on the MSDN Web site.
  • customizations.xml: this file contains all of the content and mark-up that you will need to change.

Now if you look at the SavedQuery XML from the custom view which I configured in the view editor (left side of the image below), you will notice that it is quite different from the Associated Documents view that I customized previously (See Showing SharePoint document properties in Dynamics CRM views )



For a description of the different XML nodes and attributes used you can take a look at the Saved Query XML Reference but the most notable differences in the Associated Documents grid are the following – and these are also the changes that you need to make in the XML for your custom view.
  • SharePointDocument.RetrieveDocument – the official documentation only states that a string value is expected but not really what value is needed. For integration with SharePoint you need to specify SharePointDocument.RetrieveDocument
  • – defines a set of columns to return in a saved query, it seems that it is necessary to also take over a number of SharePoint specific columns.  (Reference: Saved query XML reference columnsetxml   )
  • (Reference: Saved query XML reference layoutxml )
  • 0  -  0 is for a normal main application view,  2 is for an associated view (Reference: Saved query XML reference querytype )
  • – here you need to specify the additional SharePoint document metadata columns that you want to show in the grid
After you have made the changes to view as outlined above you will see that your custom view will also work correctly. I have added the full savedquery also in Sample SavedQuery download link. In a next post I will outline how you make it possible to modify SharePoint document properties from within the CRM interface.

Related posts:

Wednesday, September 14, 2016

So you want to become a data scientist?

It has been over 4 years that the article Data Scientist: the sexiest job in the 21st century appeared and the interest in a data scientist career has probably increased if you take a look at Google search trends – see https://www.google.com/trends/explore?q=data%20science (although I’m quite puzzled by the high interest in Nigeria).



For those of you out there who have never heard of data science, check out Data science for the rest of us. It has also become easier to get started given the abundance of resources available on the web and MOOC platforms such as Coursera and Edx offer quite a few data science and machine learning courses. Listed below are a number of links to get you started. However keep in mind that if you want to make a profession of this, you will need to put a lot of effort in it – check out this excellent post Stop saying learning to code is easy and just replace “Programming” with “Data Science” and you will get the picture.

Friday, September 09, 2016

Showing SharePoint document properties in Dynamics CRM views

As outlined in a previous blog post, Dynamics CRM provides out of the box integration with SharePoint – meaning that you can upload your documents into SharePoint directly from within the CRM user interface and link them to specific CRM records (See Using SharePoint Online to store Dynamics CRM Online documents for more details). This same integration scenario is also available for Dynamics CRM on-premise and SharePoint Server on-premise deployment.  From Dynamics CRM 2016 onwards it is also possible to use hybrid integration scenarios where as outlined in Setup SharePoint Integration with Dynamics CRM

The preferred method for integration is using Server-to-server integration (See Integrate Microsoft Dynamics CRM CRM with SharePoint) but there are some noticeable differences between the Dynamics CRM List component and server-based SharePoint integration as outlined in Important considerations for server-based SharePoint integration as well as SharePoint Integration Reloaded Part 1 from Scott Durow. From Dynamics CRM

 One of the great features which is enabled using server-based SharePoint integration is the fact that you are also able to show fields (or site columns) which are added in SharePoint within the Documents view in Dynamics CRM. Site columns or library columns (also referred to as fields or attributes) are used to organize documents so that people can find back the documents they need more easily. Document libraries in SharePoint are like real libraries where you can borrow books, a library has a system in place to search for the books by publication year, author, language, genre, age category, etc… In a SharePoint document library you would use site columns or library columns which would contain this information. This is also called metadata – “data (information) that provides information about other data”.  So if you enable document management on the Account entity in CRM using server-based-integration it would look like the screenshot below.  
 Dynamics CRM uses a number of entities to enable the integration with SharePoint :
  • SharePoint site (schema: SharePointSite): represents a location record in Microsoft Dynamics CRM that points to a site collection or a site on a server that is running SharePoint Server (See SharePointSite entity messages and methods )
  • SharePointDocumentLocation : represents a location record in Microsoft Dynamics CRM that points to a document folder on a server that is running SharePoint Server. You can associate the SharePoint document location records in Microsoft Dynamics CRM with the entity records for the entities for which the SharePoint Server integration or document management feature is enabled. (See SharePointDocumentLocation entity messages and methods)
  • UserMapping : represents a custom claim mapping record in Microsoft Dynamics CRM to use a value other than the default value used by CRM Online for authenticating and authorizing CRM users in SharePoint (See UserMapping entity messages and methods)
Next to these three entities which are documented by Microsoft there is a 4th entity SharePointDocument which is actually quite an important entity since it is in the SharePointDocument entity that you can define additional SharePoint columns that you want to be displayed in the grid. Internally CRM will translate the FETCHXML query to a SharePoint query (CAML – Collaborative Application Markup Language ) – if you are interested to know how this is done you can use JustDecompile and take a look at the code in the Microsoft.CRM.ObjectModel.dll which apparently has the implementation code for the SharePoint integration.


If you look at the SharePoint Document entity in CRM and check out the list of fields you’ll see there are quite a few fields (such as Title, version, etc..) that you can display. These fields will display the corresponding values from columns in a SharePoint document library if you add them to the SharePoint Document Associated View. So for example you can quite easily make the title of a document in SharePoint appear in the CRM view.

This is great for the out of the box fields but if you have modified the library in SharePoint to add additional attributes you’ll notice they are not displayed. So let’s image that you have added a custom field called DocType (of type text) in a SharePoint document library as shown below and you want to show the values of this SharePoint column in Dynamics CRM (I suppose that you already setup with document management integration already setup). You will need to perform a number of steps to accomplish this: 
  • Create a new solution in Dynamics CRM (you can also use the Customize the system option but this is not really the recommended way)
  • Add the SharePointDocument entity and the Document Associated Grid to your CRM solution

  • Navigate to the SharePoint document library that is used to store the documents linked to your CRM record and add a column of type text with name “DocType”.
  • Add a field on the SharePointDocument entity with exactly the same display name “DocType” of type single line of text. Dynamics CRM will use the display name of the fields to do the mapping with the query which is send to SharePoint. All values returned from SharePoint will be of type text except for a date field in SharePoint. So you need to create fields of the corresponding type in CRM.
  • Modify the “Document Associated Grid” view that you added to your CRM solution and add the newly created CRM field to this view. (This will only work with the “Document Associated Grid” view – to make this work with new views you will need some extra steps that I will outline in a next blog post)

Once you fill in the values of the SharePoint fields for the different documents you will notice that they appear in the CRM “Document Associated Grid” as well. This seems to work for the following types of SharePoint fields: text, number,date,choice, boolean,currency and person. I currently only tested the scenario in Dynamics CRM Online (8.1.0.452) in combination with SharePoint Online as well as for Dynamics CRM 2016 (Update 0.1) on premise in combination with SharePoint Server 2013 but I guess it should also work in other setups which are using server-based-integration.



References:





Monday, August 22, 2016

SQL Server Management Studio available as separate download

I just finished my first installation of SQL Server 2016 and I noticed that SQL Server Management Studio was available as a completely separate install option and not a part of the main installation. Microsoft decided to make SQL Server Management Studio (SSMS) available as a separate download . This also means that SSMS does not require a license anymore. The current release (13.0.15700.28) works with all supported versions of SQL Server (2008 to 2016) as well as SQL Azure. The rationale behind is that Microsoft will be able to update the tooling at a swifter pace than the releases of SQL Server itself.

Technorati Tags: ,,

Sunday, June 19, 2016

Quick tip - using Azure Powershell with multiple subscriptions

If you have multiple Azure subscriptions linked to the account that you use to login – the operations in Azure PowerShell are executed against the “current subscription”. You can use the Get-AzureSubscription PowerShell cmdlet to see all of the subscriptions and also which is the “current” subscription. During a PowerShell session, you will need to use the Select-AzureSubscription cmdlet to choose which subscription data set is used by other Azure cmdlets with the following syntax "Select-AzureSubscription -name "NameOfYourSubscription".

Technorati Tags: ,

Friday, April 08, 2016

Software boundaries and limits for Dynamics CRM 2015/2016/Online Part 1

One of the TechNet pages that I consulted quite often as SharePoint architect was the Software boundaries and limits for SharePoint 2013, so I expected the same page to exist for Dynamics CRM 2015/2016 and Dynamics CRM Online. Unfortunately, this is not the case. There is however some valuable insights hidden in a number of interesting white papers and web pages so it might be logical to combine them.

But let’s first take a look at why such a resource might be needed more than ever. I think that massive Dynamics CRM deployments – in number of users -  are still quite rare especially if you compare it with SharePoint.  This is however quite normal given that both products are covering completely different functional domains and where SharePoint might be used by everyone in a company, Dynamics CRM users are typically still found in customer facing departments (service management and sales & marketing) . This might be one of the reasons why there hasn’t been any need to compile such an extensive list of boundaries and limits for Dynamics CRM. But in an era where winning the customers heart and mind is getting harder and harder – it becomes imperative that companies transform from ‘product-focused’ to ‘customer-focused’ which will put CRM more at the center of your enterprise architecture and which might also trigger larger deployments of CRM both in terms of number of users, transactions and records.

But in the enterprise market we are currently already encountering at what you might describe as “High Volume” systems. A “High Volume” system might have one or more of the following characteristics:
  • High volume data:  more than 1 mio records in the base tables (Contacts,Accounts, …) or more than 5000 activities/day or more than 1 mio/year
  • High volume transactions
  • High volume users/security:  more than 300 concurrent users or more than 1000 teams and business units
Typically these “High Volume” CRM systems take more effort and thought to setup and to keep them up and running smoothly and  unfortunately there is no high-volume switch available in Dynamics CRM to make this work auto-magically.




I also got feedback from another CRM architect stating that there are no real hard limits in Dynamics CRM for on-premise deployments but only scalability guidelines that you should follow. But still when you are doing a large CRM deployment chances are that you might call in Microsoft consultancy to assist you or audit your design they will point you to some specific boundaries and limits that you should adhere to. These guidelines and boundaries and are defined in the Microsoft Product Line Architecture for Dynamics CRM which unfortunately is not publicly available (See Introducing the Microsoft Product Line Architecture if you are unfamiliar with PLA) and although these are indeed no hard limits –if you don’t comply you will be asked to provide mitigating or corrective actions.

To get started you should definitely take a look at the Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM 2016 Performance and scalability documentation. This download contains the Dynamics CRM Scalable Customizations white paper which describes how SQL Server platform-level issues can occur that create slow Microsoft Dynamics CRM application performance or error messages returned to the end-user. It also provides information about how to optimize a custom implementation and enable better performance that results in better end-user experience. It also contains the Scalable security modeling with Microsoft Dynamics CRM 2015 white paper which describes how security modeling features in Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM 2016 related to authorization work at scale, the associated implications, and guidance on common and recommended usage patterns for modeling Microsoft Dynamics CRM 2015 and Microsoft Dynamics CRM 2016 security at scale, incorporating teams as appropriate.  Both white papers are updated versions of the papers which were initially written for CRM 2011 and CRM 2013 because in essence the core architecture as described in Microsoft Dynamics CRM Reference Architecture has not changed significantly in the later versions.


Given the focus of Microsoft on Dynamics CRM Online you might also be faced with a large deployment of Dynamics CRM Online and you have to keep in mind that Dynamics CRM Online does contain some hard limits. I will cover these in a next blog post.  But the Microsoft Dynamics CRM Online patterns & principles for solution builders white paper download provides already some solid guidance specifically about building solutions using Microsoft Dynamics CRM Online. Also keep in mind that Dynamics CRM Online deeply integrates into Office 365 (Yammer, SharePoint Online, Exchange Online and Office 365 Groups) and you might also need to the integrate some Microsoft Azure components so you should also have a solid grasp of these components as well as a solution architect.

Last but not least - it is a sad truth that in most deployments bad performance is not due to the number of users, transactions or records stored in Dynamics CRM but mainly caused by bad code – so also take a look at Best practices for developing with Microsoft Dynamics CRM.

References: