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:

image

The field itself is marked as optional:

image

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.


Sitemap-Editor in Dynamics 365 – Well done Microsoft!

Did you already use the new sitemap-editor in Dynamics 365? If not, do it!

First time I used it, when I was trying to edit the sitemap in XrmToolBox. It said:

image

So I did the following:

  1. Create a new solution per example “procrm.sitemap” and add the sitemap to it:
    image
    image
  2. Now, open the sitemap with a double-click. Here we go, the new sitemap-editor pops up:
    image
  3. Now add by drag’n’drop new sections, groups and per example entites:
    image[30]

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

image


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.


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.


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


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


Fehlerhafte Grafikanzeige (v.a. Header) im CRM

Beim Öffnen des CRMs (CRM 2015 oder CRM 2016) kann die Benutzeroberfläche bei einigen Benutzern ab und zu wie folgt aussehen:image

Grafiken wie bsp. der Header werden nicht korrekt angezeigt. Besonders anfallen tut dies, wenn ein Theme mit Logo definiert worden ist und das Logo nicht geladen wird.

Schuld daran ist die persönliche Option “Hohen Kontrast aktivieren”. Dies kann wie folgt deaktiviert werden:image

Dann die Option deaktivieren:

image

Und schon sieht das CRM wieder wie gewohnt aus:

image