<?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/categories/dynamics-crm/</link><description>Recent content in Dynamics CRM on Nicolas Nowinski</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 27 Dec 2022 03:29:15 +0000</lastBuildDate><atom:link href="https://nicknow.net/categories/dynamics-crm/index.xml" rel="self" type="application/rss+xml"/><item><title>Power Platform CLI: Installing, Connecting, and Selecting an Organization</title><link>https://nicknow.net/power-platform-pac-cli-installing-connecting-and-selecting-an-organization/</link><pubDate>Tue, 27 Dec 2022 03:29:15 +0000</pubDate><guid>https://nicknow.net/power-platform-pac-cli-installing-connecting-and-selecting-an-organization/</guid><description>&lt;p&gt;I&amp;rsquo;ve been spending some time with the modern tooling and thought it would help to blog some of the step-by-step to help others.&lt;/p&gt;
&lt;h2 id="install-pac-cli"&gt;Install PAC CLI&lt;/h2&gt;
&lt;p&gt;Open a command prompt and type &lt;code&gt;pac&lt;/code&gt; to see if the Power Platforms CLI (command line interface) is installed on your machine. If you get an error (not found) you&amp;rsquo;ll need to install the PAC CLI.&lt;/p&gt;
&lt;p&gt;Go to &lt;a href="https://aka.ms/PowerAppsCLI"&gt;https://aka.ms/PowerAppsCLI&lt;/a&gt; to download the installer. Then run the installer. If the CLI installs successfully than the &lt;code&gt;pac&lt;/code&gt; command should run successfully and display a list of commands.&lt;/p&gt;</description></item><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>Microsoft Business Applications (PowerApps/Dynamics 365) at Inspire 2018</title><link>https://nicknow.net/microsoft-business-applications-powerapps-dynamics-365-inspire-2018/</link><pubDate>Fri, 20 Jul 2018 17:48:23 +0000</pubDate><guid>https://nicknow.net/microsoft-business-applications-powerapps-dynamics-365-inspire-2018/</guid><description>&lt;p&gt;&lt;a href="https://news.microsoft.com/inspire2018/"&gt;Microsoft Inspire 2018&lt;/a&gt; wrapped up on Thursday (7/19) with a Bruno Mars concert. But, before the music there were a bunch of very useful sessions on Microsoft Business Applications (i.e., Dynamics 365, PowerApps, Flow, PowerBI, etc.)&lt;/p&gt;
&lt;p&gt;Yes, I know the marketing/branding still a bit unclear but hopefully that will be cleared up by &lt;a href="https://www.linkedin.com/in/jamesmalcolmphillips/"&gt;James Phillips&lt;/a&gt; next week at the &lt;a href="https://www.microsoft.com/en-us/businessapplicationssummit"&gt;Microsoft Business Applications Summit&lt;/a&gt; in Seattle.&lt;/p&gt;
&lt;p&gt;You can find all the session videos from Microsoft Inspire 2018 on the &lt;a href="https://myinspire.microsoft.com/videos"&gt;web site&lt;/a&gt;. I&amp;rsquo;ve curated a handful of sessions that would be top of list in prioritizing. I still recommend going through the site and finding other sessions that may be of interest.&lt;/p&gt;</description></item><item><title>Where to Get the Dynamics CRM SDK (Dynamics 365 SDK)</title><link>https://nicknow.net/get-dynamics-crm-sdk-dynamics-365-customer-engagement-sdk-9-0-and-beyond/</link><pubDate>Wed, 10 Jan 2018 03:52:33 +0000</pubDate><guid>https://nicknow.net/get-dynamics-crm-sdk-dynamics-365-customer-engagement-sdk-9-0-and-beyond/</guid><description>&lt;p&gt;As a Dynamics 365 (CRM) developer you have probably come to rely on the Dynamics CRM SDK over the years. With the release of Dynamics 365 Customer Engagement 9.0 (a.k.a. July 2017 Update) the old downloadable SDK has been replaced by an online document set and NuGet packages. This allows the SDK to become more of a living document where everyone is always referencing the most up-to-date information from Microsoft. Overall, I believe this is a big positive for developers which will make for a better development experience.&lt;/p&gt;</description></item><item><title>Dynamics 365: Calculating Next Anniversary/Birthday Date</title><link>https://nicknow.net/dynamics-365-calculate-view-next-birthday-anniversary-date/</link><pubDate>Mon, 04 Dec 2017 05:14:55 +0000</pubDate><guid>https://nicknow.net/dynamics-365-calculate-view-next-birthday-anniversary-date/</guid><description>&lt;p&gt;A client of mine recently asked for support to show the &lt;strong&gt;next&lt;/strong&gt; birthday for a contact. Often there will be an ask for a list view of contacts with a birthday in the next month. In this post I&amp;rsquo;m going to show you how to use a business rule and calculated fields to achieve this functionality without writing any code. This will be a a native calculated field so it can be used in lists, forms, queries, etc.&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><item><title>Dynamics CRM 2011: Abstracting Plugin Setup</title><link>https://nicknow.net/dynamics-crm-2011-abstracting-plugin-setup/</link><pubDate>Sat, 11 Aug 2012 17:15:00 +0000</pubDate><guid>https://nicknow.net/dynamics-crm-2011-abstracting-plugin-setup/</guid><description>&lt;p&gt;Originally published at &lt;a href="http://bit.ly/RIxgt9"&gt;http://bit.ly/RIxgt9&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="how-people-do-it-today"&gt;How people do it today…&lt;/h2&gt;
&lt;p&gt;Often times when looking at Dynamics CRM plugin code that someone else has written – or that I have written in the past, I&amp;rsquo;m presented with a large collection of setup and validation code at the start of the Execute method. Overtime it becomes obvious that this is simply cluttering up our core Plugin code with what is really overhead infrastructure work.&lt;/p&gt;</description></item><item><title>Dynamics CRM 2011: Check Team Membership</title><link>https://nicknow.net/dynamics-crm-2011-check-team-membership-2/</link><pubDate>Sat, 11 Aug 2012 17:08:28 +0000</pubDate><guid>https://nicknow.net/dynamics-crm-2011-check-team-membership-2/</guid><description>&lt;p&gt;Originally published at &lt;a href="http://bit.ly/OPyMVn"&gt;http://bit.ly/OPyMVn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The team in Dynamics CRM 2011 provides an ability to group users, assign record ownership to a group of users, and extend security roles to users based on their team membership (as opposed to individually assigning the role.)&lt;/p&gt;
&lt;p&gt;Teams in Dynamics CRM 2011:
A &lt;em&gt;team&lt;/em&gt; is a group of users. This organizational structure enables groups of users across an organization to share information. Each team must be associated with only one business unit. A team can include users from any business unit, not only the business unit with which the team is associated. Users can be associated with more than one team.
&lt;em&gt;More details can be found in the &lt;a href="http://msdn.microsoft.com/en-us/library/gg328485.aspx"&gt;Dynamics CRM 2011 SDK Documentation&lt;/a&gt;.&lt;/em&gt;
Beyond allowing cross-business unit record access and assignment of security roles, the Team entity can provide a simple way to create a group of users.&lt;/p&gt;</description></item></channel></rss>