Cust.-rule #2: Use entity-icons!

Did you ever see navigation entries like this in the following picture on the left side? Doesn’t it look like “unfinished”? The entry on the right picture looks more professional, right?


Because of that: Always use icons, if you are creating a new entity – always! Doing this is really easy. This is the way I do this:

1. What icons do I need?
An entity needs two icons:
- 16×16 pixels
- 32×32 pixels (This is the one you can see then in the navigation.)

2. Get a tool!
There are several ways to create icons. I use very often the “Metro Studio” from Syncfusion. You can download this free tool from here.


3. Create the icons

# Description
1 Start the “Metro Studio”
2 Search your favorite icon in the top right corner or choose from the categories on the left side hand.
3 Once you found your icon, just click on it.

I use the following options for the 32×32 icon:
- Width: 32px
- Padding: 4px
- Icon color: #FFFFFFFF


Important: Use white color, because Microsoft does it too. So your icon will look like more “integrated” in the whole CRM app.4Click “Export” to save your icon in the png-format.5Repeat the same to create the 16×16 picel icon.

4. Add the icon the the entity

# Description
1 In Dynamics CRM navigate to your entity, open its properties and click “Update Icons” in the ribbon of the entity window:
2 Add the icons to the entity by adding a webresource. This is one way to do this:

5. Save and publish your entity – That’s it!

Customizations rules – A new blog series


This is the start of my new blog-series about CRM-customizations rules which are making your CRM-system more attractive and “cleaner”.

This series is perfect for CRM-newbies but also should give input to experienced CRM-system customizers.

Stay tuned, the first blog entry will be public very soon!

Error while activating BPF: “Invalid Business Process.”

Problem: Today I was not able to activate a business process flow. I got a business process error:

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: System.Web.HttpUnhandledException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #6D99E8D8Detail: 
<OrganizationServiceFault xmlns:i="" xmlns="">
  <ErrorDetails xmlns:d2p1="" />
  <Message>System.Web.HttpUnhandledException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #6D99E8D8</Message>
  <ExceptionSource i:nil="true" />
    <ErrorDetails xmlns:d3p1="" />
    <Message>Invalid Business Process.</Message>
    <ExceptionSource i:nil="true" />
    <InnerFault i:nil="true" />
    <OriginalException i:nil="true" />
    <TraceText i:nil="true" />
  <OriginalException i:nil="true" />
  <TraceText i:nil="true" />

Solution: After some research I found the problem. There was a related Process which was in draft modus. After activating the process I was able to activate the BPF.


Are you missing your CRM-Outlook-AddIn?

In case you are missing the CRM-AddIn buttons in your outlook and you are sure you installed the AddIn, then maybe the following steps will help you:

1. Open the outlook-options: image

2. Navigate to Add-Ins and open the COM-Add-Ins list:

3. If the following checkbox is unchecked, check it and click OK: image
Et voila: Your buttons are back! image

PowerShell & Dynamics 365 (Part ll): Let’s connect!

This second part of the series shows step by step, how to setup a connection with Dynamics 365 and create a simple account.

1. Have a look at Part l to setup the basis.
2. Open the “Windows PowerShell ISE”:
3. Import the module
# import the module

Import-Module Microsoft.Xrm.Data.Powershell

4. Connect to the Org:

# connect to a dynamics 365 organisation 
Connect-CrmOnlineDiscovery –InteractiveMode

This will show a modal dialog where you can access the CRM (Online or OnPrem):


Click “Login” to get the available orgs and then click “Login” again to setup the connection to Dynamics 365.

After successful login the prompt shows you information about your organisation:


4. And now, let us create some data! The following command will create a simple account and return the GUID:
$accountId = New-CrmRecord -conn $CRMConn -EntityLogicalName account -Fields @{"name"="proCRM";"telephone1"="123-456"}

That’s it for today. The next post will show how to get data from CRM by PowerShell

PowerShell & Dynamics 365 (Part l): Setup the basis!

This is the first part of a blog post series about PowerShell together with Dynamics 365 (CRM).

Why PowerShell?

PowerShell-Commands are useful in many cases. Here a short overview what PowerShell can do:

  • Read/Write CRM-settings
  • CRUD CRM-records
  • Do complex data-modification without coding
  • Setup organization
  • and a lotmore!

Let’s start

1. Download the newest version of the “Microsoft.Xrm.Data.PowerShell”-Module:
2. Right click the downloaded zip file and click “Properties”.
3. Check “Unblock” checkbox and click “OK”, or simply click “Unblock” button depending on OS versions:

Extract the zip file and copy “Microsoft.Xrm.Data.PowerShell” folder to one of the following folders:
”%USERPROFILE%\Documents\WindowsPowerShell\Modules” or “%WINDIR%\System32\WindowsPowerShell\v1.0\Modules”

That’s it, we are ready. The next post of this series will show how to create a connection to a Dynamics 365 organization. Stay tuned!

(Source for this blog entry and more information:

Cannot remove the field “Name” from the lead form?

Problem: On the lead entity we only want to have the customer field (account or contact) and remove the field “Name” (fullname).  If we try to remove the field from the form, we are getting an error:


The field itself is marked as optional:


So why can we not remove the field from the form?

Solution: The fullname is a composite field of two fields: “firstname” and “lastname”. If one field of a composite field is marked as required the hole composite field will be required on the form. (it doesn’t matter if the field is required or not.)

In our case it was the field “lastname” which was marked as required. After changing that to “optional”, we could successfully remove the field from the form.

Latest version compatibility overview

Nice overview of the version compatibility and also nice information about solutions can be found here:


How to detect deactivated business rules of all entities?

Problem: Sometimes after a deployment of customizations business rules are deactivated. (Reason unknown..)

How can we check now all business-rules for their state if we don’t want to open every entity and check every single rule for its state? image

Solution: By the advanced find! (Column “Status”)


Invalid parameter ‘regardingobjectidtype=account’ in Request.QueryString

Im CRM ist es möglich via URL ein Formular zum Erfassen eines neuen Datensatzes zu öffnen. Dabei können  meisten Felder eines Formulars direkt mit URL-Parameter gesetzt werden. Bsp. zum Setzen des Feldes “Name”:


Es gibt jedoch Ausnahmen wie bsp. das Feld “RegardingObjectId” auf einer Aktivität-Entität. Dieses Feld kann (wahrscheinlich da es sich um ein ActivityParty handelt) nicht via URL gesetzt werden. Versucht man es trotzdem findet man im CRM-Server-Trace folgenden Fehler:

System.InvalidOperationException: CRM Parameter Filter - Invalid parameter 'regardingobjectidtype=account' in Request.QueryString

Ist das Setzen des Feldes jedoch trotzdem gewünscht, kann mit Form-Parametern gearbeitet werden. Hierzu sind drei Parameter notwendig:


Diese drei Parameter können in der URL dem Formular übergeben werden:


Auf dem Formular kann nun mit Hilfe von JavaScript das Feld “RegardingObjectId” gesetzt werden:

function addToPartyListFromFormParameters(propertyName, idBaseName, replaceExisting) {
    var queryParams = Xrm.Page.context.getQueryStringParameters();
    var idParam = queryParams[idBaseName];
    var nameParam = queryParams[idBaseName + "name"];
    var typeParam = queryParams[idBaseName + "type"];

    if (idParam && nameParam && typeParam) {
                Id: idParam,
                Name: nameParam,
                LogicalName: typeParam,
            }, replaceExisting
        return true;
    return false;

Ein möglicher Inhalt wie die Funktion “addToPartyList” aussehen könnte, kann hier gefunden werden: