Tag Archives: crm online

System Administrator Role identifizieren

Basierend auf der gewählten Base Language der CRM Organization haben die Roles (Sicherheitsrollen) unterschiedliche Namen. So heisst der “System Administrator” auf Deutsch “Systemadministrator”. Es stellt sich nun die Frage, wie man eine Role organisationsübergreifend und unabhängig von der Base Language identifizieren kann.
Continue reading

Reliable Import Job für CRM mit Azure und MVC WebAPI

Beim AaaS für Dynamics CRM hat man (verständlicherweise) mit einigen Limitationen zu kämpfen. Das wird gerade bei Enterprise Szenarien schmerzlich bewusst. Wenn zum Beispiel die folgende Anforderung gegeben ist “Jede halbe Stunde soll ein SAP Import laufen. Der SAP Import liefert jeweils viele Daten und die in das CRM zu schreiben dauert min. 10 Minuten. Hier stellt es gleich an zwei Stellen an. Erstens die  infinite loop prevention (siehe Post “Dynamics CRM, Recurring Workflows und die Execution Depth”) und zweitens das Sandbox Timeout. Das Problem lässt sich also nicht oder nur umständlich mit Workflows lösen. Da kommt Azure ins Spiel.

Continue reading

Bulk Data Load CRM 2013 – Speedtest

Was ist die schnellste Methode um 10’000 neue Accounts in einem CRM Online zu erstellen? Im letzten Post “Bulk Data Load CRM 2013 – Tipps und Tricks” habe ich schon einiges dazu geschrieben. Hier wird es nun etwas konkreter. Continue reading

Bulk Data Load CRM 2013 – Tipps und Tricks

Operationen mit grossen Datenmengen im Microsoft Dynamics CRM sind häufig sehr langsam und daher mühsam. Richtig ärgerlich wird es wenn einem das Sandbox Timeout in einem Plugin oder einer Custom Workflow Activity dazwischen kommt. Continue reading

Integration Scenarios CRM 2013 – Übersicht

In diesem Post gebe ich eine Übersicht über die Möglichkeiten für die Integration von Fremdsystemen bzw. deren Daten ins CRM 2013.

Inhalt
UI-Only
Read-Only
Progressiv Read-Only
Read / Write Sync
Read / Write Realtime


UI-Only
Die Daten werden im CRM nur angezeigt bzw. die Fremdapplikation wird integriert.

IFrame
Das CRM erlaubt das Einfügen von IFrames auf Forms.
So kann leicht ein UI eines Fremdsystems angezeigt werden.

IFrame + SRSS
Hat das andere System kein Web-Frontend oder verhindern andere Umstände die Integration über ein IFrame, besteht dich Möglichkeit ein SRSS Report zu erstellen und diesen in einem IFrame anzuzeigen.

Dialogs
In der Commandbar/Ribbon wird ein Button eingefügt der das Fremdsystem in einem Popup öffnet.

HTML + JS
Mittels HTML und JavaScript lässt sich z.B. ein REST Service einfach ansprechen und die Daten darstellen.
Dabei wird entweder ein bestehender Service verwendet oder es wird selbst ein Service erstellt der die Daten des Fremdsystems zur Verfügung stellt.

Zu berücksichtigen
– Abhängigkeit
Direkte Abhängigkeit zum Fremdsystem
– CRM Funktionalitäten nicht verfügbar
Auf den Daten steht keine CRM Funktionalität zur Verfügung (z.B. Advanced Find oder Workflows)


Read-Only
Daten werden Unidirektional ins CRM synchronisiert.
Dabei ist das Fremdsystem der Master.

Dafür gibt es diverse Möglichkeiten:

Eigenständige Tools
Microsoft Dynamics CRM Instance Adapter von Microsoft
Scribe, dass auch einen Cloud Dienst anbietet

SSIS mit Adapter
KingswaySoft Adapter

CRM OOB
– Der CRM Import wird genutzt
Die meisten Fremdsysteme können Daten als CSV Dateien exportieren.

Eigenentwicklung
– Custom Workflow Activity
Mit Hilfe einer Custom Workflow Activity und einem reccuring Workflow wird der Import selbst entwickelt.

Zu berücksichtigen
– Datenmengen
Vorsicht bei grossen Datenmengen. Verglichen mit einem SQL Server ist das CRM sehr langsam.
Dadurch geht das schreiben und holen von Daten unter Umständen sehr lange.
Dabei muss bei Plugins und Workflow Activities immer das Sandboxtimeout (2 min) im Hinterkopf behalten werden.
– Abhängigkeit
Evtl. Abhängigkeit zu 3rd Party Tools oder Services


Progressiv Read Only
Daten werden bei Bedarf geholt.

Ohne Caching
Mithilfe des “Retrieve” oder “RetrieveMultiple” Events für Plugins, können Daten On-Demand nachgeladen werden.
Ein Beispiel: Basierend auf einer Id soll aus dem SAP der Betrag über offene Rechnungen vom jeweiligen Account geholt werden.
Die Daten des Fremdsystems werden dann in die Records, die vom CRM zurückgegeben werden, hineingeschrieben.

Mit Caching
Dasselbe wie ohne Caching aber zusätzlich werden die geholten Daten auch ins CRM geschrieben. Das Plugin wird so programmiert, dass der Wert nur einmal im Tag neu vom Fremdsystem geholt wird.

Zu berücksichtigen
– Performance
Das Plugin und somit das holen der Daten wird jedes Mal ausgeführt, wenn ein Record retrieved wird.
Wird also eine View mit 250 Records angezeigt, wird das Plugin 250 ausgeführt.
– Keine “realtime” Trigger
Da die Daten nicht im CRM liegen oder nur im CRM gecached werden, kann keine Aktion auf dem Change Event ausgeführt werden.


Read / Write Sync
Daten werden bidirektional mit dem CRM und dem Fremdsystem synchronisiert.

Dafür können die gleichen Techniken wie bei “Read Only” verwendet werden.
Eine zusätzliche Herausforderung ist hier das Löschen.
Wird ein Datensatz im CRM gelöscht und dieser soll auch im Fremdsystem gelöscht werden, muss dafür eine eigene Liste geführt werden, die weiss welche Records gelöscht wurden.
Dafür wird eine eigene Entität erstellt und auf dem “Delete” Event ein Plugin registriert, dass einen entsprechenden Eintrag erstellt.

Zu berücksichtigen
– Datenmengen
Vorsicht bei grossen Datenmengen. Verglichen mit einem SQL Server ist das CRM sehr langsam.
Dadurch geht das schreiben und holen von Daten unter Umständen sehr lange.
Dabei muss bei Plugins und Workflow Activities immer das Sandboxtimeout (2 min) im Hinterkopf behalten werden.
– Konflikt Management
Was passiert wenn ein Datensatz in beiden Systemen gleichzeitig geändert wird?
– Datenaktualität
Die Daten im CRM sind unter Umständen nicht aktuell.
– Abhängkgiet 3rd party
Evtl. Abhängigkeit zu 3rd Party Tools oder Services
– Löschen


Read / Write Realtime
Daten werden bidirektional mit dem CRM und dem Fremdsystem synchronisiert.
Änderungen werden in Echtzeit übernommen.

In:
Die CRM API bietet dem Fremdsystem beste Möglichkeiten um Daten ins CRM zu schreiben.

Out:
Mittels Plugins, sync oder async je nach Anforderung, werden Änderungen ins Fremdsystem geschrieben.

Zu berücksichtigen
– Locking und Konflikte
Darf ein Datensatz in beiden Systemen gleichzeitig bearbeitet werden?
Was passiert wenn ein Datensatz in beiden Systemen gleichzeitig geändert wird?
– Transaktionssicherheit
Was passiert wenn das Fremdsystem nicht erreichbar ist oder nur ein Teil der geänderten Daten geschrieben werden konnte?

CRM Online Plugin auf Azure ausführen – Part 4

Nach den Beiträgen “CRM Online Plugin auf Azure ausführen – Part 1, 2 und 3“, folgt nun der Beitrag “CRM Online Plugin auf Azure ausführen – Part 4” wo es ans eingemachte geht. Ich durfte in einem Projekt eine Workflow Activity auf Azure auslagern. Es war nicht sonderlich schwer aber trotzdem gab es das eine oder andere was ich gelernt habe. Continue reading

CRM Online Plugin auf Azure ausführen – Part 3

Im Post “CRM Online Plugin auf Azure ausführen – Part 1” und “CRM Online Plugin auf Azure ausführen – Part 2” habe ich gezeigt wie man den ExecutionContext von Plugins auf den Azure Service Bus posten und mit einer WorkerRole abarbeiten kann. Somit lässt sich ein Plugin auslagern um z.B. die Sandbox-Restriktionen zu umgehen oder rechenintensive Aufgaben zu skalieren.

In diesem Post geht es um die Kosten.
Continue reading

CRM Online Plugin auf Azure ausführen – Part 2

Im Post “CRM Online Plugin auf Azure ausführen – Part 1” habe ich gezeigt wie man den ExecutionContext von Plugins auf den Azure Service Bus posten kann.
Als Konsumenten habe ich eine lokale Konsolen-Applikation verwendet.
Nun wäre natürlich das Ziel, alles in der Cloud laufen zu lassen.
In diesem Post zeige ich, wie man eine Azure Worker Role erstellt und den Listener bzw. das Plugin dort hosten kann.
Continue reading

CRM Roadmap 2014

Das Jahr 2014 wird ein spannendes Jahr für Microsoft Dynamics CRM. Das gilt für Consumer ebenso wie für Entwickler, dazu mehr in einem späteren Post. In diesem Post geht es um die geplanten Releases. Continue reading