<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Dynamics CRM on Nicolas Nowinski</title><link>https://nicknow.net/tags/dynamics-crm/</link><description>Recent content in Dynamics CRM on Nicolas Nowinski</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Sat, 01 Sep 2018 05:53:13 +0000</lastBuildDate><atom:link href="https://nicknow.net/tags/dynamics-crm/index.xml" rel="self" type="application/rss+xml"/><item><title>Why the Microsoft Power Platform is the No-Code Low-Code Platform You Need Now</title><link>https://nicknow.net/microsoft-power-platform-no-low-code/</link><pubDate>Sat, 01 Sep 2018 05:53:13 +0000</pubDate><guid>https://nicknow.net/microsoft-power-platform-no-low-code/</guid><description>&lt;p&gt;What is the &lt;a href="https://dynamics.microsoft.com/en-us/microsoft-power-platform/"&gt;Power platform&lt;/a&gt; all about? I get this question a lot.&lt;/p&gt;
&lt;p&gt;The reality is that the Power platform is more than one thing and it can be &amp;ldquo;about&amp;rdquo; a lot of different things.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://powerapps.microsoft.com/"&gt;PowerApps&lt;/a&gt; is a pixel-perfect mobile-first UX app creation for the enterprise. Common Data Service is a ready-to-go no-limits data service for building an application backend. PowerApps is the ability to rapidly build forms and views over that data service with minimal effort. &lt;a href="https://dynamics.microsoft.com/"&gt;Dynamics 365&lt;/a&gt; is a series of commercial applications ready to run your business processes. &lt;a href="https://powerbi.microsoft.com"&gt;Power BI&lt;/a&gt; is about analyzing and visualizing data from anywhere. &lt;a href="https://flow.microsoft.com/"&gt;Flow&lt;/a&gt; is integrating data from multiple services and automating business processes across those services.&lt;/p&gt;</description></item><item><title>Dynamics CRM: Extensions to Improve IOrganizationService</title><link>https://nicknow.net/dynamics-crm-iorganizationservice-extension-methods/</link><pubDate>Tue, 26 May 2015 22:42:41 +0000</pubDate><guid>https://nicknow.net/dynamics-crm-iorganizationservice-extension-methods/</guid><description>&lt;p&gt;I&amp;rsquo;ve become a big fan of &lt;a href="http://www.dotnetperls.com/extension"&gt;extension methods&lt;/a&gt; over the years to make my development work in Dynamics CRM, easier to implement and easier to read (i.e., easier to support.) &lt;a href="https://msdn.microsoft.com/en-us/library/bb383977.aspx"&gt;Extension methods&lt;/a&gt; allow us to, exactly as the name implies, extended an existing class or interface with new methods - its a simpler version of implementing a &lt;a href="https://msdn.microsoft.com/en-us/library/a48h1tew.aspx"&gt;derived class&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anyone familiar with developing .NET code for Dynamics CRM will be familiar with the &lt;code&gt;IOrganizationService&lt;/code&gt; interface and its varied implementations. While in most cases I&amp;rsquo;m a fan of implementing my own version of IOrganizationService, often for code-base simplicity I&amp;rsquo;ll rely on some extension methods for my code.&lt;/p&gt;</description></item><item><title>Dynamics CRM: FetchXML to Retrieve Access Team Members</title><link>https://nicknow.net/dynamics-crm-fetchxml-retrieve-access-team-members/</link><pubDate>Tue, 19 May 2015 22:56:12 +0000</pubDate><guid>https://nicknow.net/dynamics-crm-fetchxml-retrieve-access-team-members/</guid><description>&lt;p&gt;The very smart folks over at &lt;a href="http://www.powerobjects.com/"&gt;PowerObjects&lt;/a&gt; recently posted a &lt;a href="http://www.powerobjects.com/2015/05/14/how-to-retrieve-all-the-access-team-members-for-all-accounts/"&gt;blog article&lt;/a&gt; on how to retrieve the membership of an Access Team using SQL.&lt;/p&gt;
&lt;p&gt;When working in CRM Online or when we need to use the query for a view we have to make our SQL statements work as FetchXML. Here is the FetchXML that will retrieve Access Team members. You can edit it for the desired entity and place filtering as appropriate. In this case, we are retrieving all the Opportunity records and User records for the Opportunity Sales Teams (CRM&amp;rsquo;s default OOTB example of Access Teams.)&lt;/p&gt;</description></item><item><title>Duplication Instead of Automation: Retailers Need Dynamics CRM</title><link>https://nicknow.net/stop-duplication-dynamics-crm-retail/</link><pubDate>Wed, 08 Apr 2015 02:46:54 +0000</pubDate><guid>https://nicknow.net/stop-duplication-dynamics-crm-retail/</guid><description>&lt;p&gt;This evening I was at a major national electronics retailer to purchase a new television. I recently moved into a new place and needed a television sized appropriately for the room (and, my old television being plasma, something that would run cooler to save money on air conditioning.)&lt;/p&gt;
&lt;p&gt;There was a very nice sales person - not too much pressure (and, being honest, didn&amp;rsquo;t know much about televisions) but there to help when I needed it. I had already done some research and really just needed to see a few models side-by-side to make a final decision. It probably didn&amp;rsquo;t take me more than thirty minutes to decide which television I wanted, at which point the sales person sprung into action.&lt;/p&gt;</description></item><item><title>Dynamics CRM and ILMerge: The Easy Way to Merge DLLs for Plugins</title><link>https://nicknow.net/dynamics-crm-ilmerge-dll-plugin/</link><pubDate>Mon, 02 Feb 2015 04:08:17 +0000</pubDate><guid>https://nicknow.net/dynamics-crm-ilmerge-dll-plugin/</guid><description>&lt;p&gt;Being able to use external DLLs in Dynamics CRM plugins is challenging but doable. Most people who have been doing development on the Dynamics CRM platform for any period of time know that it is not enough to simply reference the DLLs in Visual Studio - you must somehow make them available to run on the server - this can range from mildly annoying to impossible (if you using CRM Online.)&lt;/p&gt;</description></item><item><title>Dynamics CRM: Custom Entity Forms Specific to Users</title><link>https://nicknow.net/dynamics-crm-entity-forms-specific-to-users/</link><pubDate>Mon, 10 Mar 2014 10:54:00 +0000</pubDate><guid>https://nicknow.net/dynamics-crm-entity-forms-specific-to-users/</guid><description>&lt;p&gt;Recently a question was asked about creating forms and specifying a default form in Dynamics CRM that was limited to specific group of users. The &lt;a href="http://stackoverflow.com/questions/21883230/where-security-role-is-used"&gt;original question and answer&lt;/a&gt; are available on Stackoverflow. Stackoverflow is a great site for asking and getting answers to your Dynamics CRM questions.&lt;/p&gt;
&lt;p&gt;You already have a default form for the entity that is used by all users (All Users). You want to add an additional form to that entity that is only available to some of the users (Select Users). All Users are currently assigned a security role that gives them the necessary access to the system.&lt;/p&gt;</description></item><item><title>Using LINQPad for Dynamics CRM Development</title><link>https://nicknow.net/linqpad-dynamics-crm-sdk/</link><pubDate>Fri, 01 Nov 2013 00:46:54 +0000</pubDate><guid>https://nicknow.net/linqpad-dynamics-crm-sdk/</guid><description>&lt;p&gt;You are likely already familiar with the excellent development tool &lt;a href="http://www.linqpad.net"&gt;LINQPad &lt;/a&gt;and if you are a Dynamics CRM Developer you, hopefully, are familiar with &lt;a href="http://archive.msdn.microsoft.com/crmlinqpad"&gt;LINQPad Plugin for Dynamics CRM&lt;/a&gt;. Using LINQPad along with the LINQPad CRM Plugin is a great way to learn the ins and outs of writing LINQ queries for Dynamics CRM.&lt;/p&gt;
&lt;p&gt;In this article I will show you how, with just a minimal of effort, you can start using LINQPad to directly call Dynamics CRM. This will allow you to go beyond just building LINQ queries and execute code to test Request/Response messages, QueryExpression retrieval, FetchXml, and much more. Using LINQPad allows you to test and learn in real-time without waiting to compile your code and execute your test cases (if you even have test cases! You do have test cases, right?)&lt;/p&gt;</description></item><item><title>Dynamics CRM 2011: Prep Plug-in for XrmToolbox</title><link>https://nicknow.net/dynamics-crm-2011-prep-plug-in-for-xrmtoolbox/</link><pubDate>Thu, 31 Jan 2013 12:53:00 +0000</pubDate><guid>https://nicknow.net/dynamics-crm-2011-prep-plug-in-for-xrmtoolbox/</guid><description>&lt;p&gt;Originally published at &lt;a href="http://goo.gl/bkewP1"&gt;http://goo.gl/bkewP1&lt;/a&gt; ​I can&amp;rsquo;t really take a lot of credit for this post. All of the difficult work was done by a couple of Dynamics gurus. &lt;strong&gt;XRM Prep Plug-in&lt;/strong&gt; This is a plugin for XrmToolBox (&lt;a href="http://xrmtoolbox.codeplex.com/"&gt;http://xrmtoolbox.codeplex.com/&lt;/a&gt;) by Tanguy Touzard. Great thanks to Tanguy for releasing XrmToolBox and providing really solid documentation on how to create Plug-ins for it. XrmToolBox and his numerous other very useful Dynamics CRM tools, which all now run in XrmToolBox, are a great value to the Dynamics CRM community. The idea, implementation logic, and solution file that are the basis for this plug-in are the work of Marc Schweigert from Microsoft. His excellent blogging has been the source of great education for me about how to get the most out of Dynamics CRM. The XRM Starter solution file and the code were published
by him in the blog post linked to below. &lt;a href="http://blogs.msdn.com/b/devkeydet/archive/2013/01/22/getting-a-new-crm-2011-organization-ready-for-xrm.aspx"&gt;http://blogs.msdn.com/b/devkeydet/archive/2013/01/22/getting-a-new-crm-2011-organization-ready-for-xrm.aspx&lt;/a&gt; You must install XrmToolBox on your machine to use this plug-in (&lt;a href="http://xrmtoolbox.codeplex.com/"&gt;http://xrmtoolbox.codeplex.com/&lt;/a&gt;). After installing XrmToolBox copy the Procetrnix.CleanForXRM.Dll file to the same directory that XrmToolBox.Exe is installed. Run XrmToolBox and you should see the XRM Prep listed as one of the modules under the Home tab. This plug-in is intended to be used against a new Dynamics CRM organization prior to making any customizations to prepare it for custom development, it can perform the following: - Install the XRM Starter solution file from Marc&amp;rsquo;s post. Hide the existing reports. Remove all the non-required security roles. Remove the standard dashboards. There are four checkboxes that allow you to select what all you want XRM Prep to handle for you. If you do not want the solution file to be imported you should uncheck Import Solution, etc. When you are ready click on Run in the toolbar at the top of the tab to run the process. You&amp;rsquo;ll see a status screen while the work is being done and a message box will inform you when it is completed. If you want a copy of the solution file you may download it from the link in Marc&amp;rsquo;s blog article (URL above) or you can click the Export XRM Solution File from the toolbar to export the file. The DLL exposes a public class, XrmSolutionSetup, that can be used by any .NET 4.0 code. XrmSolutionSetup has a method called Execute that expects to be used as the delegate for BackgroundWorker.DoWork. Thus, this
code could be reused in another solution if you did not want to use XrmToolBox. One idea would be to implement this in a console application or PowerShell script that deployed and configured a new organization to start development.  Here is the plug-in DLL: &lt;a href="http://sdrv.ms/11pTAIn"&gt;http://sdrv.ms/11pTAIn&lt;/a&gt; If you want to modify it for your own purposes or just see how it was implemented here is the source:&lt;a href="http://sdrv.ms/11pTMaB"&gt;http://sdrv.ms/11pTMaB&lt;/a&gt; No guarantees or anything&amp;hellip;the source code is there so make it do what you want it to do. I hope this will help you speed up development work and inspire a couple people to make use of the great platform that Tanguy has given us with XrmToolbox.&lt;/p&gt;</description></item><item><title>Dynamics CRM 2011: Finally...Enterprise ALM for Dynamics CRM 2011</title><link>https://nicknow.net/dynamics-crm-2011-finally-enterprise-alm-for-dynamics-crm-2011/</link><pubDate>Fri, 28 Dec 2012 16:42:00 +0000</pubDate><guid>https://nicknow.net/dynamics-crm-2011-finally-enterprise-alm-for-dynamics-crm-2011/</guid><description>&lt;p&gt;Originally published at &lt;a href="http://goo.gl/XXm6z5"&gt;http://goo.gl/XXm6z5&lt;/a&gt; ​I wanted to bring your attention to two items that can be very useful for all of us working on Dynamics CRM.
As you are aware, CRM customization and development has never really worked well with enterprise focused application lifecycle management (ALM.) The export capability (even with Solutions in 2011) has never worked very well with source code control and change management. In addition, scripting of builds and deployments for customizations have never been what I would call straight-forward or even possible.
In the SDK released for Rollup 10 a Solution Packager command-line application that takes an exported solution file and breaks it up into its individual pieces. This combined with the command-line Solution Export tool in the MSCRM Toolkit provides the pieces necessary to automate CRM solutions in a system such as TFS or Git. (&lt;a href="http://intovsts.net/2012/12/28/integration-of-dynamics-crm-2011-solutions-with-tfs/"&gt;http://intovsts.net/2012/12/28/integration-of-dynamics-crm-2011-solutions-with-tfs/&lt;/a&gt;)
Of course, the next request in enterprise development is automated deployment. As a holiday gift to the CRM world ADXStudio released a beta of their ADXStudio ALM Toolkit (&lt;a href="http://community.adxstudio.com/products/adxstudio-alm-toolkit/"&gt;http://community.adxstudio.com/products/adxstudio-alm-toolkit/&lt;/a&gt;) - licensing and pricing have not been announced so we&amp;rsquo;ll have to wait and see. This toolkit includes PowerShell Scriplets that allow for creating organizations and user and automated deployments of solutions, it includes a number of PowerShell scripts to demonstrate usage. It also includes a very valuable command-line tool to copy data from a source system to a file and then import the data during a deployment – this is especially useful for simplifying the process of loading configuration/base data during deployment.
Taken together these tools provide the pieces necessary to fully automate the build and deployment process for Dynamics CRM. Many environments do not need this level of automation and the overhead for these tools has to be justified by the requirements. That said, for those environments where the needs justify the time/expense of full ALM it is good to know the requirements can be met with using pre-built tools.&lt;/p&gt;</description></item><item><title>Dynamics CRM 2011: Simplifying the Request Response Model</title><link>https://nicknow.net/dynamics-crm-2011-simplifying-the-request-response-model/</link><pubDate>Sat, 22 Sep 2012 16:40:00 +0000</pubDate><guid>https://nicknow.net/dynamics-crm-2011-simplifying-the-request-response-model/</guid><description>&lt;p&gt;Originally published at &lt;a href="http://goo.gl/C1n3Hw"&gt;http://goo.gl/C1n3Hw&lt;/a&gt; If you have worked with the Dynamics CRM 2011 SDK you are probably very familiar with the Request/Response model messages in Microsoft.Crm.Sdk.Messages. As a developer trying to write good code I always want to wrap any service call in a Try/Catch statement to provide proper error handling. Another goal is to keep the code as neat as possible for when I – or someone else – has to go back and read it. Wrapping calls in Try/Catch statements increases the total lines of code it takes to implement functionality and makes the code more difficult to read. Recently I was working on a project where I had several of these calls in a row: Execute a request, process the response, build a new request, execute, etc. etc. While I was looking at the code I realized that my catch routine was basically the same (format a message for the user and exit out of the program – in addition to sending a number of execution details to the tracing service). Since the code was getting very long, my first thought was to refactor each of these calls into its own method. While this approach would make my code a bit cleaner, it was still somewhat limited in value. After thinking about the problem a bit more, I decided this would be a perfect opportunity to implement generics, extension methods, and delegates. If you are unfamiliar with any of these topics, here is a super quick introduction: - &lt;a href="http://msdn.microsoft.com/en-us/library/twcad0zb(v=vs.10).aspx"&gt;Generics&lt;/a&gt; allow us to create a method without having to know all the input types or the response type thus allowing the developer to specify them when calling the method. &lt;a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx"&gt;Extension&lt;/a&gt; methods allow us to create static methods against an existing class without having to inherit to a new class thus we do not disturb any code already relying on the class we want to extend. &lt;a href="http://msdn.microsoft.com/en-us/library/ms173171(v=VS.10).aspx"&gt;Delegates&lt;/a&gt; let us take a method (that matches the specified signature) and pass it as a variable. &lt;em&gt;You can find out more about each of these concepts in the MSDN documentation links provided.&lt;/em&gt; Before we get too far into the details we should review the issue we are trying to resolve. Here is a very basic CRM plug-in that executes a WhoAmI request and gets a WhoAmI response. As I count it there are 6 statements with the try/catch but not including the PluginSetup (see my previous post at&lt;a href="http://goo.gl/lEaa9"&gt;http://goo.gl/lEaa9&lt;/a&gt;), to complete the request. It may not seem like a lot, but in the real-world those calls also have logging and the request probably has actual properties that need to be set. No matter what request message you use the basic pattern will remain the same. public void Execute(IServiceProvider serviceProvider)
{
var p = new PluginSetup(serviceProvider);
var req = new WhoAmIRequest();
WhoAmIResponse response = (WhoAmIResponse)p.Service.Execute(req);&lt;/p&gt;</description></item></channel></rss>