| Carsten's profileMicrosoft Dynamics CRM &...BlogLists | Help |
Microsoft Dynamics CRM & CoNeuigkeiten, Tipps, Trends und Tricks |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Microsoft Dynamics CRM 4.0 | Update Rollup 5
Fast pünktlich zum Monatsbeginn hat Microsoft das Update Rollup 5 zur Verfügung gestellt. Installationshinweise unter http://support.microsoft.com/kb/970141/en-us/. Besonders interessant dabei der Patch: ”An entity form loads slowly after you add many fields of several different attribute types in Microsoft Dynamics CRM 4.0”
Microsoft Dynamics CRM | Grid Aktionen (Bericht aus einem Codeplex-Projekt)
von Zeit zu Zeit lohnt sich immer mal wieder der Blick auf codeplex.com. Nachdem ich vor kurzem für ein Projekt diverse Aktionen aus der Grid-Ansicht heraus ermöglicht habe (unter anderem die Möglichkeit, auch Aktivitäten aus der Grid-Übersicht als “abgeschlossen” quittieren zu können), durfte ich vor kurzem feststellen, dass die Freunde von iCRM offenbar eine ganz ähnliche Anforderung aus einem Projekt hatte und auf codeplex.com in dem Projekt CRM Grid Actions Ihre Entwicklung als Download zur Verfügung stellen. Bereits mit wenigen Anpassungen ist daraus auch eine deutschsprachige Lösung in Eurem System integriert. Dazu bedarf es etwas Know-How der Anpassung der ISV-config.xml (Ein Beispiel wird in der Datei “ISVButtonsetting.xml” mitgeliefert und muss nur noch mit Übersetzungstext und entsprechendem Ländercode angepasst werden), sowie der Übersetzung der Ansichtstexte der beiden ASPX-Seiten MultiSelect- bzw. SingleSelect.aspx. Hinsichtlich der Integration des Buttons >>Aktivitäten abschließen<< darf ich allerdings auch den berühmten Spruch “Mit viel Macht kommt auch große Verantwortung” erneut ins Spiel bringen. Es findet keinerlei Plausibiltätsprüfung statt, die ausgewählten Aktivitäten werden als abgeschlossen abgespeichert. Wer dann noch eine versehentlich abgeschlossene Aktivität erneut bearbeiten möchte, der sollte sich auf jeden Fall einen Workflow “manuelle Ausführung” erstellen, mit dessen Hilfe der Status der Aktivität wieder auf “offen” gestellt wird und damit eine erneut Bearbeitung der Aktivität ermöglicht wird. Mein Fazit: Es lohnt sich immer, einen Blick auf codeplex.com zu riskieren.
Microsoft Dynamics CRM 4.0 | Berichte – Client Drucksteuerelement
seit Neuestem bekomme ich immer häufiger Anfragen hinsichtlich der Fehlermeldung bei dem Versuch die aus Microsoft Dynamics CRM heraus aufgerufenen SQL Berichte zu drucken. Nachdem ein Druck über die Schaltfläche des Report-Viewers versucht wird, meldet das System: “Das Client-Drucksteuerelement kann nicht geladen werden.” Microsoft hat hierzu bereits im Februar diesen Jahres einen Support-Artikel veröffentlicht, in dem die einzelnen Schritte beschrieben werden, die zur Bereinigung dieses Fehlers beitragen. Unter KB 967511 findet sich dieser Artikel. Also einfach die unter “Resolution” aufgeführten Schritte durchführen und sich anschließend auch wieder an der Druck-Möglichkeit des Berichtes erfreuen ;-)
Microsoft Dynamics CRM 4.0 | Systemansichten Manager (Public Views Manager)
Ich darf mich an dieser Stelle bei Andriy Butenko (aka a33ik ), dass er mir gestattet über seinen Public Views Manager zu berichten. Ich hatte die Gelegenheit seine Entwicklung ins Deutsche für ein Kundensystem zu übersetzen und erlaube mir, via meinem SkyDrive, Euch diese sehr sinnvollen Entwicklung anbieten zu können. Worum es geht? Die Systemansichten sind grundsätzlich für alle User im System sichtbar. Manchmal jedoch hat man die Anforderung, bestimmte Ansichten nur für gewisse Abteilungen “frei” schalten zu können. Genau dieses Problem greift der Public Views Manager auf und schafft über die Auswahl von Unternehmenseinheiten die Möglichkeit die Systemansichten (den Zugriff) einzuschränken. Kontakt-Ansicht vor Einsatz des Public Views Managers:
Kontakt-Ansicht nach Einsatz des Public Views Managers:
Auf der Blog-Seite findet Ihr auch ein Video mit genauer “Gebrauchsanweisung”. Nachdem Ihr den Public Views Manager (Systemansichten Manager) installiert habt, stehen Euch via den Unternehmenseinheiten Einschränkungen auf Systemansichten zur Verfügung. Jetzt müsst Ihr konsequenterweise nur noch Eure Abteilungen als Unternehmenseinheiten eingerichtet haben. Zur Installation: Ihr findet im o.g. Order die Anpassungs-XML-Datei. Diese zunächst in Euer System integrieren (1031 und 1033 als Ländercode enthalten). Anschließend mit dem Plug-In-Registration-Tool (im aktuellen SDK oder unter http://code.msdn.microsoft.com/crmplugin) die .dll-Datei registrieren und dann noch zwei Schritte registrieren. 1. Schritt: Message = Create, Entität = new_publicviewmanager, 2.Entität = none, Post, Synchron 2. Schritt: Message = RetrieveMultiple, Entität = savedquery, 2. Entität = none, Pre, Synchron Fertig !
Ich wünsche Euch viel Spass mit dem Systemansichten Manager (Public Views Manager) von a33ik.
Microsoft Dynamics CRM 4.0 | Sicherheit für Grid-Buttons
Folgendes Szenario: Ihr habt in einer Datensatzübersicht(Grid)-Ansicht einen Button hinzugefügt, der ein Ereignis auslöst. Nun habt Ihr jedoch die Anforderung, dass dieses Ereignis nur ein bestimmter Personenkreis ausführen darf. Hier hilft uns ein kleines, feines Script weiter: function DoSomething() { // Define the role names you wish to allow var allowedRoles = [ "Planer", "Systemadministrator" ]; // Check to see if the user's role matches one of the defined allowed roles var roleAllowed = IsRoleAllowed(allowedRoles); // If the role is not allowed, then alert if (! roleAllowed) { alert('Sie sind nicht berechtigt, die Funktion auszuführen.' return; } // Here comes the code which should fire, if the user is allowed } function IsRoleAllowed(allowedRoles) { // Find the user security roles var result = RetrieveUserRoles(); var foundResult = false; // Loop through the allowed role list checking if the user belongs to one of the roles. for (i=0;i<=allowedRoles.length;i++) { if (result.indexOf(allowedRoles[i]) > -1 ) { foundResult = true; break; } } return foundResult; } // Method to return the user's security roles function RetrieveUserRoles() { // Define URL to CRM API service var serverUrl = "/mscrmservices/2007/crmservice.asmx"; // Set up XMLHTTP request var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("POST", serverUrl, false); xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8") // Specify correct SOAP action in the header xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/RetrieveMultiple") // Define the retrievemultiple message var message = [ "<?xml version='1.0' encoding='utf-8'?>", "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">", "<soap:Header>", "<CrmAuthenticationToken xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">", "<AuthenticationType xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">0</AuthenticationType>", // Change Microsoft for your Organization name here. "<OrganizationName xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">MicrosoftCRM</OrganizationName>", "<CallerId xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">00000000-0000-0000-0000-000000000000</CallerId>", "</CrmAuthenticationToken>", "</soap:Header>", "<soap:Body>", "<RetrieveMultiple xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>", "<query xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:QueryExpression'>", "<q1:EntityName>role</q1:EntityName>", "<q1:ColumnSet xsi:type='q1:ColumnSet'><q1:Attributes><q1:Attribute>name</q1:Attribute></q1:Attributes></q1:ColumnSet>", "<q1:Distinct>false</q1:Distinct>", "<q1:LinkEntities>", "<q1:LinkEntity>", "<q1:LinkFromAttributeName>roleid</q1:LinkFromAttributeName>", "<q1:LinkFromEntityName>role</q1:LinkFromEntityName>", "<q1:LinkToEntityName>systemuserroles</q1:LinkToEntityName>", "<q1:LinkToAttributeName>roleid</q1:LinkToAttributeName>", "<q1:JoinOperator>Inner</q1:JoinOperator>", "<q1:LinkEntities>", "<q1:LinkEntity>", "<q1:LinkFromAttributeName>systemuserid</q1:LinkFromAttributeName>", "<q1:LinkFromEntityName>systemuserroles</q1:LinkFromEntityName>", "<q1:LinkToEntityName>systemuser</q1:LinkToEntityName>", "<q1:LinkToAttributeName>systemuserid</q1:LinkToAttributeName>", "<q1:JoinOperator>Inner</q1:JoinOperator>", "<q1:LinkCriteria>", "<q1:FilterOperator>And</q1:FilterOperator>", "<q1:Conditions>", "<q1:Condition>", "<q1:AttributeName>systemuserid</q1:AttributeName>", "<q1:Operator>Equal</q1:Operator>", "<q1:Values>", "<q1:Value xmlns:q2='http://microsoft.com/wsdl/types/' xsi:type='q2:guid'>", GetUserId(), "</q1:Value>", "</q1:Values>", "</q1:Condition>", "</q1:Conditions>", "</q1:LinkCriteria>", "</q1:LinkEntity>", "</q1:LinkEntities>", "</q1:LinkEntity>", "</q1:LinkEntities>", "</query>", "</RetrieveMultiple>", "</soap:Body>", "</soap:Envelope>" ].join(""); // Submit to the CRM API web service and receive a response xmlhttp.send(message); return xmlhttp.responseXML.text; } // Method to return the current user's systemuserid function GetUserId() { // Define URL to CRM API service var serverUrl = "/mscrmservices/2007/crmservice.asmx"; // Set up XMLHTTP request var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlhttp.open("POST", serverUrl, false); xmlhttp.setRequestHeader("Content-Type", "text/xml; charset=utf-8") // Specify correct SOAP action in the header xmlhttp.setRequestHeader("SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Execute") // Define the execute message var message = [ "<?xml version='1.0' encoding='utf-8'?>", "<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">", "<soap:Header>", "<CrmAuthenticationToken xmlns=\"http://schemas.microsoft.com/crm/2007/WebServices\">", "<AuthenticationType xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">0</AuthenticationType>", // Change MicrosoftCRM for your Organization name here. "<OrganizationName xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">MicrosoftCRM</OrganizationName>", "<CallerId xmlns=\"http://schemas.microsoft.com/crm/2007/CoreTypes\">00000000-0000-0000-0000-000000000000</CallerId>", "</CrmAuthenticationToken>", "</soap:Header>", "<soap:Body>", "<Execute xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>", "<Request xsi:type='WhoAmIRequest' />", "</Execute>", "</soap:Body>", "</soap:Envelope>" ].join(""); // Submit to the CRM API web service and receive a response xmlhttp.send(message); var result = xmlhttp.responseXML.xml; // Create a new DOM document and load the response XML var doc = new ActiveXObject("MSXML2.DOMDocument"); doc.async = false; doc.loadXML(result); // Return the userid node var returnNode = doc.selectSingleNode("//UserId"); if( returnNode != null ) { // If the userid node exists, return its value return returnNode.text; } else { return null; } } Wenn Ihr jetzt vom Grid-Button aus, die Funktion DoSomething() ausführen würdet, dann müssen die Benutzer mindestens eine der ausgewählten Rechterollen zugewiesen haben, um die Funktion ausführen zu können. Damit ist der Button zwar auch für die anderen Benutzer im Grid sichtbar. Ein Klick darauf bewirkt jedoch, dass entweder die Funktion ausgeführt wird oder eben nicht.
Microsoft Dynamics CRM 4.0 | Titel bei mehrfach geöffneten nicht-gespeicherten Aktivitäten beeinflussen
Wie Ihr alle wisst, ist der Standard-Titel einer Aktivität zunächst “Neu”. Erst nach der Speicherung des Datensatzes wird der Betreff als Titel hergenommen. Das Problem: In der täglichen Praxis der Arbeit mit Aktivitäten kommt es vielleicht auch bei Euch häufiger vor, dass Ihr – gerade unter Nutzung der Registerkartenmöglichkeit mit dem IE7 oder IE8 – mehrere Aktivitäten gleichzeitig geöffnet habt, diese jedoch noch nicht gespeichert habt. Wenn dann z.B. im Support noch der Bezug der jeweiligen Aktivitäten auf einen Anfrage gestellt wurde, weiß man allenfalls hierüber noch den Bezug zu einem Anfragetitel, jedoch nicht mehr zu einem Kunden. Ich wollte also eine Möglichkeit schaffen, dass der Aktivitätstitel bei einer Relation einer Aktivität zu einer Anfrage den Kundennamen anzeigt, um eine Aktivitätszuordnung auch im “nicht-gespeicherten Zustand” besser zu visualisieren. Zunächst fand ich von Adi Katz ein Script “CRM LookupPreview”, mit dem es möglich ist, eine Vorschau auf Informationen eines Lookup-Feldes im OnMouseOver-Effekt ausgeben zu lassen.
Damit jedoch nicht genug, denn bei mehrfach geöffneten nicht-gespeicherten Aktivitäten (z.B. Telefonanrufen) müsste die Anwenderin/der Anwender nunmehr direkt den Mauszeiger auf das Lookup-Feld richten, um zu erkennen, für wen die Anfrage und damit die Aktivität angelegt wird. Ich wollte daher noch einen anderen optischen Hinweis: Ich fand die Möglichkeit, den Namen der Entität bereits zur Laufzeit zu beeinflussen eine geeignete Methode, einen optischen Hinweis zu platzieren. Damit könnten im Praxisbetrieb gleich mehrere Telefonanrufe geöffnet und nicht-gespeichert bleiben, dennoch wäre jedem klar ersichtlich, wofür die Aktivität angelegt werden sollte. Noch dazu müsste ich nicht das Betreff-Attribut um Informationen ergänzen, die mit dem Betreff eigentlich nichts zu tun haben – also z.B. den Betreff stets zu ergänzen um “Firmenname: Betreff“ Um diese Funktion zu realisieren sind zwei Lösungsbausteine hier kombiniert: 1.) Die Funktion den Titel zur Laufzeit zu beeinflussen und 2.) Die Funktion schnellstmöglich auf eine Entität referenzierende Informationen nach zu laden. Die komplette .js-Datei findet Ihr zum Download auf meinem Skydrive: Hier. Dieses Beispiel zeigt einmal mehr, dass die Kombination von einigen JScript-Funktionen die Anwendung noch erheblich benutzerfreundlicher gestaltet werden kann. Und jetzt seid Ihr an der Reihe…
Microsoft Dynamics CRM 4.0 | Datum/Zeit-Felder vorbelegen
Eine immer wieder auftretende Frage: Wie kann ich Datum-/Zeit-Felder vorbelegen, so dass die Eingabe für die Benutzer deutlich freundlicher ist? Mit Hilfe von JavaScript lässt sich das Verhalten dieser Felder wunderbar beeinflussen. Im OnLoad-Event lässt sich zum Beispiel hinzufügen: 1: var today = new Date(); 2: today.setHours (08); 3: today.setMinutes (00); 4: crmForm.all.your_datefield.DataValue = today;Damit setzt Ihr ein Datum-/Zeit-Feld auf das aktuelle Datum / 08.00 Uhr. Doch es geht auch noch komfortabler ! Aktuelles Datum und aktuelle Uhrzeit: 1: var today = new Date(); 2: var cur_hour = today.getHours(); 3: var cur_min = today.getMinutes(); 4: today.setHours(cur_hour); 5: today.setMinutes(cur_min); 6: crmForm.all.your_datefield.DataValue = today;Ein kleines Script – eine große Wirkung. Die Arbeitserleichterung bei der Eingabe zum Beispiel auf den Aktivitätsentitäten ist um ein vielfaches bequemer.
Microsoft Dynamics CRM 4.0 | Dokumentation schnell erstellt
heute befasse ich mich einmal mit einem Randthema aus der Projektwelt “der Dokumentation” ;-). Viel zu oft ist es die Dokumentation, an der “gespart” wird und exakt dies ist auch viel zu häufig der Grund für Unstimmigkeiten in den Projekten oder nicht klar definierten Nachsorge-Leistungen. Gerade im Bereich der möglichen Erweiterung von Microsoft Dynamics CRM 4.0 durch einen selbst, oder aber durch einen Dienstleister, ist eine gute Dokumentation jedoch das A und O. Wer hat schon einen aktuellen Überblick über die im System befindlichen OnLoad-,OnSave oder OnChange Codes? Oder wer hat seine Picklisten wirklich “im Griff” und hat dafür gesorgt, dass Picklisten, die auf mehreren Entitäten vorkommen auch tatsächlich jeweils gleiche Werte enthalten? Und wer hat wenigstens eine aktuelle .xml oder .zip-Anpassungsdatei “zur Hand”, um damit das System schnellstmöglich wieder auf den aktuellen Stand der Dinge bringen zu können? Mal im Ernst: Nur zur gern wird an einer ordentlichen Dokumentation, sei es von Quellcode oder aber auch von Anpassungen, gespart und zu häufig höre ich vom “ungeliebten Kind” des Programmierers. Dabei kann eine Dokumentation mit einfachen Mitteln wirklich schnell und einfach erzeugt werden. Hier drei Hilfsmittel, mit denen ich eine ordentliche Dokumentation in meinen Projekten erzeuge: Um in der CRM-Anpassungswelt immer einen up-to-date-Status zu haben, empfehle ich die Installation des von Philip Richardson entwickelten CRM Customization Version Add-Ins unter http://code.msdn.microsoft.com/crmversion. Dieses Add-In lässt sich einfach installieren, und erzeugt vollkommen automatisch eine Versionierung der Anpassungsdateien (.xml bzw. .zip-Archive). Da auch noch der Quellcode von Philip mitgeliefert wird, kann schon mit wenigen Anpassungen eine Individualisierung stattfinden.
Mit dem Microsoft Dynamics CRM 4.0 Documentation Generator lassen sich mit Hilfe von Microsoft Excel 2007 folgende Dokumentationen erstellen: - Masken (Forms) - Scripte - Picklistenwerte Die resultierenden Excel-Arbeitsmappen können gerade mit Hilfe der neuen Möglichkeiten von Microsoft Excel 2007 und Word 2007 schnell formatiert werden und für eine individuelle Dokumentation aufbereitet werden. Die Installation des Tools ist denkbar einfach. Die Voraussetzungen für eine Installation schnell geschaffen, da ausführlich beschrieben.
Und wenn es darum geht bereits vorhandene JScripte schnell zu analysieren und ggfs. zu erweitern, dann greife ich gern auf das von Joris Kalz zur Verfügung gestellte Hilfsmittel Microsoft Dynamics CRM JScript Export Tool zurück.
Wer jetzt noch keine Dokumentation seines Systems oder seiner betreuten Systeme erstellt hat, der sollte sich schnellstens mit diesen Werkzeugen befassen. Denn eine ordentliche Nachsorge beginnt mit einer ausreichenden Kenntnis der Ausgangssituation. Und sich mühsam in jede Quellcode-Zeile einzulesen ist weitaus zeitintensiver, als die Benutzung dieser beiden nützlichen Tools. Viel Spass und Frohe Ostern
Microsoft Dynamics CRM 4.0 | Ansicht aller Firmen, denen kein Kontakt zugewiesen wurde
Auslöser für den heutigen Artikel ist eine Frage aus der mscrm-community. Und da mir diese Frage schon häufiger begegnet ist, sei an dieser Stelle einmal eine Antwort gegeben: Die Fragestellung: “Ist es möglich eine Ansicht zu generieren, in der alle Fírmen angezeigt werden, denen kein Kontakt zugeordnet ist?”
Die Antwort: “Ohne Programmierung / Anpassung ist dieses Szenario mit “Boardmitteln” nur bedingt zu lösen.”
Ich danke Greg Owens und übersetze aus dem engl. Original-Beitrag: Lösungsweg 1.) Zunächst erstellen wir uns mit einer Erweiterten Suche eine Ansicht aller Firmen (Anmerkung: Ich verwende z.B. die Filtereinstellungen “Status = aktiv” und “Firmenname enthält Daten”). Danach lasse ich mir die Suchtreffer ausgeben. 2.) Die Ergebnisliste exportiere ich nach Excel und wähle “Dynamische Tabelle” (Anmerkung: via “Spalten bearb.” kann ich mir noch diverse Zusatzinformationen ausgeben lassen, die mir eine nachträgliche Bearbeitung der Datensätze erleichtert) 3.) Nachdem die Ergebnisliste in Excel geöffnet ist, stelle ich den Mauszeiger irgendwo in die Ergebnisliste und klicke die rechte Maustaste. 4.) Aus dem Kontext-Menü wähle ich “Abfrage bearbeiten” 5.) Es erscheint die Standard-Warnung “Diese Abfrage kann mit dem Abfrage-Assistenten nicht bearbeitet werden.” – ich wähle trotzdem ok ;-) 6.) Im Microsoft Query-Fenster wähle ich den Button “SQL” aus, um mir die hinter meiner Ergebnisliste liegende Abfrage in SQL ansehen zu können. 7.) Eure SQL-Anweisung könnte wie folg aussehen: 1: select top 10000 account0.name as 'name' 2: account0.primarycontactidname as 'primarycontactidname', 3: account0.telephone1 as 'telephone1', account0.accountid as 4: 'accountid' from FilteredAccount as account0 where 5: (account0.statecode = 0 and account0.name is not null) order by 6: account0.name asc, account0.accountid asc
8.) In Zeile 5 setzen wir nunmehr bei dem in Klammern stehenden Ausdruck an und ergänzen mit 1: AND 0 = ( 2: SELECT COUNT(*) 3: FROM dbo.FilteredContact AS contact 4: WHERE contact.parentcustomerid = account.accountid 5: AND contact.statuscode = 1 6: )9.) Eure SQL-Anweisung sollte also nunmehr wie u.g. aussehen: 1: select top 10000 account0.name as 'name', 2: account0.primarycontactidname as 'primarycontactidname', 3: account0.telephone1 as 'telephone1', account0.accountid as 4: 'accountid' from FilteredAccount as account0 where 5: (account0.statecode = 0 and account0.name ist not null 6: and 0 = (select count(*) from dbo.FilteredContact as contact 7: where contact.parentcustomerid = account0.accountid 8: and contact.statuscode = 1 )) order by account0.name asc, 9: account0.accountid asc10.) Bestätigt die Anweisung mit Ok. Es erscheint eine Warnmeldung “Eine SQL-Abfrage kann nicht grafisch dargestellt werden. Möchten Sie den Vorgang fortsetzen? 11.) Bestätigt mit Ok. Ihr seid nun wieder in dem Microsoft Query Fenster. 12.) Schließt Microsoft Query und kehrt zurück zu Microsoft Excel. Es werden nur noch Datensätze angezeigt, die der Abfrage entsprechen. Fertig !
Ich wünsche viel Spass in der Umsetzung. Meinerseits baue ich gleiche SQL-Abfrage in eine aspx-Grid-Seite, die dem Layout von Microsoft Dynamics CRM entspricht und integriere diese ISV-Lösung via Sitemap. Alle hierfür erforderlichen Lösungsbausteine finden sich im SDK beschrieben.
Microsoft Dynamics CRM 4.0 | IE 8.0 (Erfahrungsberichte)
seit 19.03. verfügbar: Microsoft Internet Explorer 8.0 – schon die Beta-Phase habe ich aufmerksam im Hinblick auf die Unterstützung von Microsoft Dynamics CRM verfolgt. Die erste Aufgabe bestand daher in den letzten Tagen mit der Live-Version die Unterstützung / Kompatibilität noch einmal komplett unter die Lupe zu nehmen. Positiv: Die Ladezeiten der CRM Seiten haben sich merklich verbessert. Und das gilt nicht nur für die Standard-Installation von Microsoft Dynamics CRM, sondern auch für angepasste (div. JScript, teilweise mit WebService-Calls oder auch DOM-Nutzung zur Manipulation der Darstellung) Seiten. Und was der Anwender / die Anwenderin optisch wahrnimmt, konnte ich auch mit dem Fiddler2-Tool belegen. Die Ladezeitmessung hat eine Verbesserung vom Startwert 20sec. auf 6sec.(!) belegt. Wie auch von auf anderen Blog zu lesen (z.B. http://blog.customereffective.com/blog/2009/03/three-reasons-why-any-microsoft-dynamics-crm-40-user-should-love-ie-8.html) kann man die Installation von Internet-Explorer 8 hinsichtlich der angesprochenen Punkte empfehlen.
Negativ: Bei der Prüfung diverser angepasster Kundensysteme ist mir aufgefallen, dass mit dem IE8 wohl erneute Anpassungen notwendig werden. So hatte Customer Effective auf Ihrem Blog unter “Scroll Bars Missing From Web Sites Linked From Microsoft CRM Sitemap” berichtet, dass zum Aufruf von externen Seiten via CRM-Sitemap in 4.0 ein anderer Weg als in 3.0 gegangen werden muss. Wer diese Anpassung getätigt hat, der wird nach Installation von IE8 die Scrollbar erneut vermissen. Hier ist also noch einmal eine Anpassung erforderlich, damit via CRM Sitemap erneut externe Seiten korrekt mit Scrollbar(s) angezeigt werden.
Wer mit Hilfe von JScript “OnLoad” Navigationselemente beeinflusst hat, der wird feststellen, dass mit dem neuen IE8 diese kurzzeitig sichtbar sind, bevor das OnLoad-Script “Wirkung” zeigt, und z.B. einige Elemente ausgeblendet werden.
Alles in allem überwiegen die positiven Aspekte nach der Installation von IE8. Über diesen Artikel werde ich Euch über weitere Erfahrungen im Zusammenhang mit IE8 + Microsoft Dynamics CRM auf dem Laufenden halten. Ich wünsche Euch viel Spass mit der neuen Version ;-)
|
MrDave´s (David Yack) CRM Blog beinhaltet eine FAQ Datenbank zur neuen Version von Microsoft Dynamics CRM 4.0
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|