Wissen soll geteilt werden


Mein Name ist Christoph Mäder und arbeite schon seit der Version 1.2 mit Microsoft Dynamics CRM. Während dieser Zeit hat sich ein umfangreiches Wissen über das Produkt angesammelt. Um dieses Wissen auch anderen MSCRM-Evangelisten und MSCRM-Begeisterten mitzuteilen, habe ich diese Website ins Leben gerufen. Sie wird in den nächsten Tagen, Wochen und Jahren mit Wissen angereichert.


Error beim Solution deployen

Problem
Beim Deployen einer verwalteten Lösung, welche unverwaltete Komponenten in verwaltete konvertiert, trat folgender Fehler auf:

The AttributeLookupValue (Id=00000000-0000-0000-0000-000000000000) entity or component has attempted to transition from an invalid state: ComponentStateName: SystemUnpublished; ComponentOperation: Delete; ComponentSolutionType: Active; SolutionOperationContext: None; IsProtected: False; IsBeingPublished: True. 

Lösung
Nach einer fast stündigen Fehlersuche war am Schluss die Lösung einfach: Auf dem Zielsystem alle Anpassungen veröffetnlichen. Danach konnte die verwaltete Lösung ohne Fehler importiert werden.


Datenbank ist riesig! Aber wo liegen die Daten?

Datenbanken brauchen oftmals viel Speicherplatz (ohne Logs), ohne dass wissentlich viel Daten darin abgelegt wurden. Gerade eine CRM-Datenbank kann sehr schnell wachsen, wenn besp. viele Mails mit Anhängen getracked werden.

Wie finde ich aber nun heraus, wo der Speicherplatz “verloren” geht? Nach ein wenig googlen bin ich auf dieverse SQL-Queries gestossen. Doch es geht einfacher. Einfach per Rechtsklick auf der gewünschten Datenbank zu den Standardreports navigieren und bsp. den “Disk Usage by Top Tables” ausführen.

image

Via Header kann der Report sortiert werden und so sieht man sehr schnell welche Tabelle am meisten Speicherplatz braucht:

image


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

/main.aspx?etn=account&extraqs=name%3DNew%20Account&pagetype=entityrecord

https://msdn.microsoft.com/en-us/library/gg334375.aspx

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:

image

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

main.aspx?etn=phonecall&newWindow=true&pagetype=entityrecord&extraqs=is_regardingobjectid%3D%7B67D26E69-082B-4F30-B70D-EF202530CD41%7D%26is_regardingobjectidtype%3Daccount%26is_regardingobjectidname%3DCompanyname

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) {
        addToPartyList(propertyName,
            {
                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:

https://rajeevpentyala.wordpress.com/2012/04/02/get-and-set-partylist-fields-using-jscript/


'navBarData' is undefined error

Problem

Nach der Migration von einer CRM 2011 Organisation auf 2016 (via 2013 und 2015) kann das Edit-Formular von verschiedenen Entitäten nicht mehr geöffnet werden resp. es bleibt eine weisse Seite und die Daten werden nicht geladen.

image

Lösung

Auf dem Form war die Anzeige der Navigationselemente ausgeschaltet:

image

Nachdem diese wieder eingeschalten worden war, konnte das Formular ohne Probleme geladen werden.


Prozessaktivierung: “Ganzzahliger Wert liegt ausserhalb des gültigen Bereichs”

Problem

Beim Aktiveren eines Workflows erscheint folgende Fehlermeldung:

image

Die Protokolldatei liefert mehr Informationen:

A validation error occurred.  The value of '1033' in attribute 'languagecode' on record of type 'workflow' not a provisioned LCID.

Lösung

Auf dem Development-System, auf welchem der Prozess erstellt worden war, war das englische Sprachpaket aktiviert. Nach dem auf Prod-Mandanten auch das englische Sprachpaket (1033) aktiviert worden war, konnte der Workflow aktiviert werden.


Active Directory-Benutzer mit Powershell erstellen

Gerade bei Test- oder Entwicklungs-Umgebungen kommt es immer wieder vor, dass mehrere Benutzer auf einmal im CRM erfasst werden müssen. Ergo müssen auch die Benutzer im Active Directory her. Bei ein zwei Benutzern mit dem Wizard kein Problem. Bei mehr Benutzern kann das Geklicke aber sehr schnell mühsam werden.

Lösung: Powershell! Mit Powershell ist es sehr einfach möglich die AD-Beutzer automatisiert zu erstellen.

  1. Die Benutzer in einer CSV-Datei erfassen:
    image
  2. Die PowerShell-Datei mit folgendem Inhalt erstellen:
    Param(
          [string]$filePath,
          [string]$initPassword
    )
    
    Import-Csv $filePath | New-ADUser -Path 'DC=PROCRM,DC=CH' -PassThru | Set-ADAccountPassword -Reset -NewPassword (ConvertTo-SecureString -AsPlainText '$initPassword' -Force) -PassThru | Enable-ADAccount

    Bemerkung: Der Parameter “Path” ist optional. Wird dieser wegglassen werden die Benutzer einfach im Root erstellt.

  3. CMD-Datei zum Aufruf der PS-Datei erstellen:
    Powershell.exe Set-ExecutionPolicy –ExecutionPolicy RemoteSigned –Scope CurrentUser Powershell.exe -File CreateAdUsers.ps1 -filePath crmusers.csv -initPasswort 'Passw0rd'
  4. Zum Erstellen der Benutzer nun einfach die eben erstellte CMD-Datei ausführen

Nice to know: Custom Activities und Quick-Forms

You can enable custom activity entities to support quick create forms, and you can create quick create forms for those entities. However, the quick create form for custom activity entities will not be used when people click the Create button on the nav bar. These quick create forms can be used only when people add a new record for a subgrid that displays that specific custom activity entity.

Source: https://technet.microsoft.com/en-us/library/dn531126.aspx#BKMK_QuickCreateFormEntities


Preview feature: Voice of the Customer surveys

Das Microsoft Dynamics CRM Team hat vor ca. einer Woche News zum Feature “Voice of the Customer” auf ihrem Blog veröffentlicht: http://blogs.msdn.com/b/crm/archive/2016/01/12/preview-feature-voice-of-the-customer-surveys.aspx

Das Feature ist ab sofort als Preview verfügbar (Scheinbar jedoch leider bis jetzt nur für US-Mandanten…)

We’re making a new feature available as a preview feature that you install as a preferred solution. With Voice of the Customer surveys, you can create and send out surveys to get feedback from your customers about your products or services. Respondents can take the surveys on a phone, tablet, or computer

Aktivieren kann man das Feature via CRM Online-Verwaltungskonsole. Hier einfach die Lösung “Voice of the Customer” installieren:

image

Die Installation macht dann nichts anderes, als eine CRM-Solution zu deployen:

image

Um das neue Feature nutzen zu können, muss zum Schluss die Solution geöffnet werden und die “Terms and Conditions” akzeptiert werden.

In einem meiner nächsten Blog-Einträge werde ich zeigen, wie eine Umfrage aussieht und wie diese eingerichtet wird.


Welche Benutzer-Lizenz muss ich kaufen?

Oftmals kaufen Kunden für ihre Benutzer teure Professional-Lizenzen obwohl eigentlich Basic (fast die Hälfte des Preises!) reichen würde.

Nachfolgend die wichtigsten Links und Auszüge zu diesem Thema für CRM 2013, 2015 und 2016.

CRM 2016

Microsoft Dynamics CRM 2016 On-Premises Licensing and Pricing Guide

Wichtigste Änderung zu CRM 2015: Die Essential Lizenz kann nun auch auf Accounts und Contacts zugreifen.

Das Wichtigste auf einen Blick (Auszug aus dem Licensing und Pricing Guide):image

CRM 2015

Microsoft Dynamics CRM 2015 On-Premises Licensing and Pricing Guide

Das Wichtigste auf einen Blick (Auszug aus dem Licensing und Pricing Guide): image 

Understanding Dynamics CRM Licensing 2015

Sehr gute und praktische grafische Darstellung der Lizenzen:

CRM 2013

Microsoft Dynamics CRM 2013 Online Pricing and Licensing Quick Reference Guide


CRM Metadata Browser – Coole Sache, nutze ihn!

Bereits seit einiger Zeit liefert Microsoft mit dem SDK den Metadata Browser mit. Nur nutzen ihn scheinbar eher weniger, was schade ist. Denn gerade wenn es darum geht System-Informationen von Entitäten oder Attributen herauszulesen stösst man mit den CRM-Bordmitteln oft sehr schnell an die Grenzen.

Nachfolgend eine nicht abschliessende Liste von Features, welche der Metadata Browser zur Verfügung stellt:

  • Schnelle und übersichtliche Listenansichten aller Entitäten und Attributen
  • SchemaName von Entitäten und Attributen (V.a. in JavaScript und REST-Abfragen sehr nützlich)
  • Privileges einer Entität (Sehr wertvoll, bei Security-Errors)

Installation

Der Metadata Browser wird mit dem SDK in Form einer Solution geliefert:

image

Die Solution in der gewünschten Organisation importieren.

Wichtig: Die Solution muss mit der Organisation kompatibel sind. Für eine OnPrem CRM 2015 (7.0) Umgebung muss  bsp. die Solution des CRM 2013 SDKs verwendet werden, da das CRM 2015 SDK bereits die Solution für CRM 2015 Update 1 (7.1) liefert, welche dann nicht kompatibel ist.

Metadatabrowser aufrufen

Zum Aufrufen des Browsers muss die importierte Solution geöffnet werden:

image

Von hier aus kann der Metadata Browser per Knopfdruck gestartet werden. (Am Besten gleich ein Bookmark setzen.)

Alternativ kann er auch direkt über die folgende URL geöffnet werden:

<CRM_URL>/WebResources/sample_/metadatabrowser/entitymetadatabrowser.htm

Verwendung

Die nachfolgende Grafik zeigt die wichtigsten Features des Browsers:

image