Microsoft Dynamics CRM 2015 | Update 1 – Lessons Learned Part III

Lessons_LearnedIhr steht also kurz vor einem Update auf CRM 2015 Update 1 und wollt von den zahlreichen neuen Funktionen profitieren? Möglicherweise habt Ihr bereits meinen 1. und 2. Teil gelesen. Nachdem ich zahlreiche Projekte in den letzten drei Wochen begleitet habe, folgen heute weitere Hinweise für euch, die das CCV Tool nicht identifiziert.

Nehmen wir an, eine Abfrage wurde via FetchXML oder einem Retrieve(Multiple) für ein Suchfeld durchgeführt und Ihr wollt mit dem Ergebnis ein Suchfeld auf eurer Maske setzen. Quasi eine 1:1 Kopie der Feldwerte von Entität A zu Entität B. Ihr verwendet für das Setzen der Werte:

Xrm.Page.getAttribute(“euerAttribut”).setValue([{ id: result.euerQuellLookup.Id, name: result.euerQuellLookup.Name, entityType: result.euerQuellLookup.LogicalName}]);

Dann wundert euch nicht über eine Fehlermeldung, sollte euer Quell-Suchfeld keine Werte enthalten. Ihr bekommt im Update 1 dann eine Fehlermeldung, dass EntityType undefiniert sei und weiterer Script-Code wird möglicherweise nicht korrekt ausgeführt.

In früheren Versionen konnte CRM mit einer leeren Quellangabe umgehen und ein Setzen des Feldwertes wurde schlichtweg nicht durchgeführt.

Nach einigen Tests mit CRM 2015 Update 1 scheint es nunmehr, dass hier gezielt im Ergebnis kontrolliert werden muss, ob ein Ergebnis vorliegt und nur im Erfolgsfall sollte dann auch das Ziel-Suchfeld mit obigem Befehl gesetzt werden.

Des Weiteren haben wir einige Installation analysieren dürfen, die jQueryUI verwendet haben, um einige Dialogfenster in der CRM Maske anzuzeigen. Diese Modifikationen zogen einige DOM Manipulationen nach sich. Jegliche Art von DOM Manipulation im CRM 2015 Update 1 zu einer Fehlermeldung bei der Initialisierung des Scripts.

Um hier in einer unterstützten Umgebung zu bleiben, empfehle ich daher diese Scripte entsprechend umzustellen. Handelt es sich bei der Ausgabe lediglich um Benutzerinformationen, so stehen hierfür die beiden Methoden:

  • Xrm.Utility.alertDialog(message,onCloseCallback)
  • Xrm.Utility.confirmDialog(message,yesCloseCallback,noCloseCallback)

zur Verfügung. Will man jedoch beispielsweise einige Daten tabellarisch in einem Dialog-Fenster darstellen, oder möchte andere HTML/CSS Formatierungen nutzen, so empfehle ich die Umstellung hin auf eine benutzerdefinierte HTML Web Ressource. Diese können wir unterstützt mit dem Befehl

Xrm.Utility.openWebResource(webResourceName,webResourceData,width, height)

aufrufen und haben über webResourceData sogar die Möglichkeit, entsprechende Ausgabewerte für eine Tabelle zu übergeben.

Doch Vorsicht: Schaut man sich das Beispiel im SDK zur Übertragung mehrerer Daten via encodeURIComponent an, so fehlt hier ein entscheidender Hinweis auf den wir in der Praxis gestoßen sind. Schauen wir uns die Beispiel URL an: 

http://<server name>/WebResources/new_/ShowDataParams.htm?Data=first%3DFirst%20Value%26second%3DSecond%20Value%26third%3DThird%20Value 

Man übersieht hier leicht, daß man schnell an das Limit der maximalen Länge einer URL heranreichen kann. Insbesondere dann, wenn ihr dem Beispiel folgt und eure Parameter tatsächlich mit first=, second=, third=, etc. beginnen lasst. Ich empfehle deutlich kleinere Schlüssel – Wertepaare. z.B. a=, b=, c=.

Dies ist zwar schlechter zu lesen, aber auf der Empfänger-Seite könnt Ihr daraus immer noch eure tatsächlichen Bezeichnungen als Variablen-Deklarationen verwenden.

Ihr seht schon, es haben sich einige Empfehlungen aus den bereits getätigten Umstellungen ergeben und ich versuche euch diese möglichst kompakt in dieser Serie zu vermitteln. Daher, bis zur nächsten “Session”…

Microsoft Dynamics CRM 2015 | Update 1– Lessons Learned Part II

Lessons_LearnedNachdem ich im 1. Teil bereits auf einige Punkte eingegangen bin, folgt heute nach weiteren Projekten ein weiterer Teil. Microsoft versendet seit kurzem Benachrichtigungen über Update 1 an die Systemadministratoren mit dem Hinweis, dass vorab der Planung des Updates auf Update 1 noch einige Tests in der Umgebung getätigt werden sollten, um sich am Update 1 auch entsprechend erfreuen zu können. In der E-Mail wird unter anderem auf das Customer Code Validation Tool verwiesen, mit dem ihr eure Anpassungen testen könnt. Aus der Praxis heraus hier nun ein paar Tipps:

Verwendung von jQuery.noConflict() – Leider erkennt das aktuelle CCV Tool die Verwendung von jQuery nicht optimal und gibt daher keinen entsprechenden Hinweis aus, den es bei der Verwendung von jQuery zu beachten gilt:

With Microsoft Dynamics CRM Online 2015 Update 1, form scripts run in a different scope than the jQuery instance used by the application. This means that there may not be an instance of jQuery available when your code attempts to use jQuery.noConflict. If you must use jQuery, you should first detect whether an instance of jQuery exists before you attempt to use jQuery.noConflict.

Verwendung der IE Developer Tools – Ihr nutzt die IE Developer Tools, um JavaScript Code mit Hilfe der Konsole zu debuggen? Dann solltet Ihr folgenden Hinweis beachten, um nicht überrascht zu sein, wenn euer Quellcode sich bei der Ausführung anders verhält, als bei der direkten Ausführung über die Konsole:

CRM forms are composed of several frames, for the code to work in the console you must select the right frame. For CRM Online 2015 Update 1 forms, select the frame named ClientApiWrapper.aspx. For earlier releases use the frame named main.aspx.

Verwendung von SDK.SOAP Library  oder anderen abhängigen Scripten, die in unterschiedlichen Bibliotheken vorgehalten werden – Das CCV Tool erkennt leider auch keine Script-Abhängigkeiten bzw. kann diese analysieren. Normalerweise fügt man alle Script-Bibliotheken der jeweiligen Form hinzu und verlässt sich bei der Initialisierung auf die Reihenfolge, in der man die Scripte der Form hinzugefügt hat. Mit der neuen Form Rendering Engine jedoch, gibt es auf die Lade-Reihenfolge keinen Verlass mehr:

As a performance optimization, Microsoft Dynamics CRM forms load JavaScript web resources asynchronously and in parallel. This means that the order in which the libraries are configured for a form does not guarantee that a library will be fully downloaded and initialized before another library might attempt to use one of the objects defined in it.

If you have code that depends on another library to be fully downloaded and initialized, the most straightforward approach is to combine both libraries within a single JavaScript web resource with your code below the library code. A more sophisticated approach is to use libraries such as head.js or require.js to control how the separate libraries are loaded.

Diese Tipps helfen euch, eure Scripte noch besser zu analysieren, denn das CCV Tool würde ich eher als grob-motorisches Werkzeug beschreiben. Den tatsächlichen “Beweis”, ob sich euer Script immer noch wie gewünscht verhält, erhaltet Ihr nur mit einem Test – z.B. durch die neue Sandbox Funktion.

Bis zum nächsten Tipp…

Microsoft Dynamics CRM 2015 | UpD 1–Lessons Learned

Lessons_LearnedWer es noch nicht mitbekommen hat, Update 1 für CRM 2015 (formerly known as Spring wave) ist seit zwei Tagen offiziell verfügbar. Und schon ist es Zeit über einige Erfahrungen in der Praxis zu berichten.

Der CRM 2015 Outlook Client – eine Aktualisierung des Clients wurde bislang nicht vorgenommen, da man mit dem CRM2015 Client grundsätzlich auch auf eine Update 1 Organisation zugreifen kann, doch schon nach kurzer Zeit stellten sich die ersten Support-Anfragen in Sachen “Öffnen einer Ansicht” ein. Die Benutzer “beklagten”, dass sich Ansichten nicht mehr öffnen ließen und Sie stattdessen mit der Animationsgrafik “Lade…” beglückt würden.

Nachdem verschiedene Auswertungen der Trace-Files nicht zu entscheidenden Hinweisen auf einen Fehler führten, wurde eine neue Ansicht erstellt und deren Layout anschließend mit Hilfe des ViewLayout Replicator aus der XrmToolBox auf alle Systemansichten übertragen. Et voilà – die Benutzer können alle Ansichten wieder einwandfrei laden. Offenbar hat sich in den fehlerhaften Ansichten ein Problem in der Layout-Definition eingeschlichen.

De- und Neuinstallation des CRM Outlook Clients für 2015 – den Outlook Client bei auftretenden Problemen gleich zu deinstallieren und anschließend neu zu installieren ist insbesondere bei großen PST Dateien wenig ratsam, stellte sich doch heraus, dass der Client nach erfolgter Verbindung zur Organisation beginnt, sämtliche nachverfolgte E-Mails erneut nachzuverfolgen. Dies führte zu einer “Unbrauchbarkeit” von MS Outlook während des gesamten Synchronisationsvorgangs. Abhilfe schafft hier

a) der Verzicht auf eine De- und Neuinstallation, da nicht erforderlich in der Aktualisierung
b) seine E-Mail Anzahl durch sorgfältige Archivierung deutlich zu reduzieren und somit den Synchronisationsvorgang zu beschleunigen.

Die neue Form Rendering Engine / kollabierte Abschnitte mit WebRessourcen / IFrames – wurde die Maske mit kollabierten Abschnitten gespeichert, in denen sich eine HTML WebRessource befindet und diese programmatisch (JavaScript) zur Laufzeit aufgeklappt, so zeigte sich eine falsche Größenberechnung, so dass nur teile des WebRessourcen-Inhalts sichtbar waren. Abhilfe schafft hier derzeit nur

a) ein Workaround, den Abschnitt aufgeklappt in der Maskendefinition zu speichern.
b) die Form Rendering Engine in den Einstellungen auszuschalten und die so genannten Legacy Forms zu verwenden.

Sodann zeigt sich der Inhalt der nachgeladenen WebRessource in der korrekten Breite. Dieser Fehler ist bekannt und es wird bereits an einer Lösung gearbeitet.

Vorhandene Workflow Aktivitäten – Durch einen Echtzeit Prozess mit einer Benutzerdefinierten Workflow Aktivität wurden plötzlich mehrere Datensätze dem Benutzer SYSTEM zugewiesen. Nachdem der Überwachungsverlauf den Prozess als “Übeltäter” entlarvte, konnte ermittelt werden, dass die Workflow Aktivität noch aus CRM 2011 Zeiten stammte und ursprünglich gegen dieses SDK kompiliert wurde. Abhilfe schaffte die Neu-Kompilierung gegen das CRM 2015 SDK und das .NET Framework 4.5.2.

Nutzung des Plug-In-Registration Toolkits – Bei dem Versuch, sich mit der Online Organisation zu verbinden zeigte sich nur ein weißer Bildschirm, obwohl das neueste SDK verwendet wurde. Dies konnte auf mehreren Rechnern nachgestellt werden. Abhilfe schaffte die Löschung des Ordners “de-de” aus dem Plug-In-Registration Toolkit Pfad. Der anschließende Neustart und nach Verbindung zur Online Organisation waren alle Plug-Ins und Workflow Aktivitäten wieder sichtbar / zugänglich.

Spontaner Anstieg des Speicherverbrauchs – grundsätzlich sollte man gerade in der Online Umgebung seine Ressourcen im Blick behalten. Durch Aktivierung zahlreicher neuer Erweiterungen – die offenbar sehr gut angenommen werden – kann sich der Speicherbedarf jedoch erheblich erhöhen. Es ist daher ratsam, sich im Vorfeld einen Blick über die bereits verwendeten Ressourcen zu verschaffen.

Soweit die ersten Erfahrungsberichte aus der täglichen Praxis. Bis zum nächsten Mal…

eXtremeCRM 2015 Madrid | Day 3 – How can I innovate

Bobs FiresideChatIf you´ve ever been to a conference like eXtremeCRM, it probably was never that hard to figure out, how to clone yourself to be part of simultaneously ongoing sessions with topics that gets your attention. The good news is, that the final Fireside Chat with Bob Stutz wasn´t and all of us have been able to ask a question, after getting so much valuable information from either the sessions, conversations, networking or connections after two or three conference days, depending on if you were attending the pre-events.

And even though it is funny to watch who´s going to be the first one having a question (breaking the ice), it is valuable to recognize quotes like:

To me, I haven´t yet figured out what the IoT (Internet of Things) is…

IC_Team_1And then there were our Innovation Challengers presenting their ideas that they´ve been working on for 8 hours. So Team 1 was presenting their concept of a better scheduling, needed for solving business case scenarios.

IC_Team_2Team 2 who where working on a mobile app with OCR business card scanning and recognition to make our next eXtremeCRM networking easier with the help of Microsoft Dynamics CRM.

IC_Team_3Team 3 who where working on an unleashed Social Pane control that is configurable, extensible and sortable like users wanna consume their Information. And last but not least…

IC_Team_4Team 4 who were going to introduce us to a CSI crime scene investigation software based on a mobile to Microsoft Dynamics CRM connected framework that could be used to achieve a faster and easier way of working on investigating crimes. As in front of the Innvation Challenge the eXtremeCRM Team and a couple of MVPs and other Contributors had a discussion about the idea of broadening up this format to all registered attendees, whether be a Functional- or Technical Consultant, being a Sales- or Marketing Manager or being a Software Developer. I´m very proud of achiving our goal to emphazise more attendees in showing up and start sharing and growing their knowledge.IC_Pricing

Thanks to our Sponsor (Adxstudio), thanks for all your virtual votes, that I got as a feedback on my first article about the Innovation Challenge and the ideas that we came up with. Thanks to my MVP colleagues ones again attending and sharing their knowledge and experiences as well as introducing (thanks Julie) and guiding the teams up on stage.

And finally another big THANK YOU to the eXtremCRM event team offering such “platform” – 5th time in a row in EMEA.

As a personal wrap up being an attendee for a couple of years, I should mention, that I was trying to avoid going to eXtreme this time, which ended up in having less sessions, but spending more time in a face to face talk with YOU.

Thanks for your feedback on the work and content that I´m providing and thanks for your support in becoming and staying an MVP. Every comment I got – being negative or positive – is driving innovation. See you soon at eXtremeCRM or anywhere else. Safe travels back home, take care…

eXtremeCRM 2015 Madrid | 2nd Day – from Stormtrooper and Jedis to the new Era of intelligent systems

John VerdonDid I missed something? Or based on Bob Stutz words during todays keynote session: You might ask yourself – what the hell are we talking about?

2nd day in Madrid and still we are at eXtremeCRM (I hope so). But being an attendee of several sessions today as well as networking and talking – it didn´t felt like this. You either could be on a mission becoming an “Expo Stromtrooper” and for sure knowing a lot about our ISV ecosystem by visiting all the booths – welcome to the dark side…(just kiddin`)

JediOr you could be emphasized making a personal note on your calendar, because you might have heard some familiar sound tracks and seen some well known trailer from the upcoming Star Wars movie – which I should say ended up in a face to face meeting with two Jedis fighting the dark side…

Bob Stutz

And then there was the keynote with Bob Stutz and Param Kahlon teaching us: 

The intelligent system you build to want – your Customer Engagement to understand you have…

Spending more than 8 hours of entertainment, learning, sharing and growing knowledge about the upcoming Microsoft Dynamics CRM 2015 Update 1 Release and even had a sneak peek on what we could expect to see in the fall wave, I have to ask – Do you feel the force growing, little Jedi?

Seriously, we had some fun today and if you couldn´t be with us today, you probably rethink about your eXtremeCRM registration next time. Looking forward on day 3 for continuing our galaxy journey – may the force be with you (us).

 

eXtremeCRM 2015 Madrid | 1st Day – Innovation starts by…

Innovation ChallengeWhat an incredible 1st day being part of the Innovation Challenge at eXtremeCRM 2015, Madrid. After a short intro we started “brainstorming” about some typical use cases that we all really would like to see inside Microsoft Dynamics CRM 2015. We did have a mixture of attendees being either a Functional or Technical Consultant, a Business Analyst or a Developer, so we finally made a descision to split the group into 4 individual teams, each one working on a single topic supported by at least one Microsoft Dynamics CRM MVP.

You do wanna know what we came up with?

Maybe you´ve heard of those from your customers, partners other events you´ve been part of or you even thought about providing it with your own team – so here are our final TOP 10:

  • Having a Notes to Azure Storage Connector
  • The Social Pane “unleashed”
  • Extending the SparkleXRM Network View Extension (recently introduced by Scott Durow)
  • A simple to use mobile Business Card to CRM Contacts “Reader”
  • CRM Caller ID
  • Adding Export to Excel functionality on Audit Summary View
  • Adding a dynamic Working Hours model
  • Large scaling Resource allocation
  • An Azure API Connector for Microsoft Dynamics CRM
  • Mobile Connecting Framework

Today I´m not gonna share with you the ideas that the teams have been working on, because we´re going to introduce what can be done within just 8 business hours working in a team on it this Wednesday, but if you could vote virtually for each topic having 4, 3, 2pts and finally 1pt for them – what would be your favorites?

I know everyone participating this time did a hard work on preparing show cases, mock-ups and slides for the audience – which is going to be a rough race, if additionally you´re having to fight against technical issues (reliable conference Wifi Network), right?!

So THANK YOU very much for spending that day with us MVPs. A pleasure to meet you (again) and working on those ideas. Thanks to all my MVP colleagues supporting it. A big “Thank you” to the R&D and Support Team members from Microsoft, willing to support and help us and finally “Thanks” to our Sponsors (Adxstudio) and the eXtremeCRM event team who are willing to provide us with this “platform”.

There´s one more thing I´d like to add. Hej Jonas, I hope we´ve met your expectations.

Microsoft Dynamics CRM 2013 | The CRM Field Guide

The CRM Field GuideHeute ist ein besonderer Tag, denn der neue CRM Field Guide für CRM 2013 ist erschienen und als Co-Autor ist es mir eine besondere Freude, dieses Werk mit Euch zu teilen. Zahlreiche meiner MVP-Kollegen haben sich diesmal am Buch-Projekt beteiligt, so dass wir annähernd 1.000 Seiten an geballtem Wissen aus der Praxis für die Praxis zusammen tragen konnten. Da viele Funktionen von CRM2015 bereits in der CRM2013er Edition eingeführt wurden, stellt das Buch natürlich auch Wissen für alle Umsteiger von CRM2011 auf CRM2013 bzw. CRM2015 bereit. Wir hoffen, euch gefällt diese Ausgabe. Einen Überblick über die Kapitel findet ihr unter www.crmfieldguide.com wo ihr das Buch in elektronischer Form ab sofort bestellen könnt.

Mein besonderer Dank neben meinen beteiligten MVP-Kolleginnen und Kollegen gilt vor allem Julie Yack und ihrem Team, ohne die dieses Buch nicht hätte entstehen können. Und ihr könnt euch vielleicht vorstellen, dass es keine leichte Aufgabe ist, so viele Autoren zu koordinieren und anschließend ein fertiges Werk aus einzelnen Kapiteln zu “komponieren”. Vielen Dank, Julie.