Microsoft Dynamics CRM 2011 | Wichtige Registry Keys 4th Edition
In nunmehr 4ter Generation habe ich in diesem Artikel alle wichtigen Registry Einträge für Microsoft Dynamics CRM 2011 zusammengefasst. Immer noch stelle ich eine große Nachfrage nach dem Artikel fest und immer noch sind zahlreiche Keys, die teilweise Features erst aktivieren in den Installationen nicht gesetzt.
Alle Registry Einträge sind serverseitig unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM zu erstellen.
Sofern es sich um Patches zum E-Mail Router handelt, sind die Registry Einträge unter
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM Email zu erstellen.
Clientseitig sind die Einträge unter HKEY_CURRENT_USER\SOFTWARE\Microsoft\MSCRMClient oder HKEY_CURRENT_USER\SOFTWARE\Microsoft\MSCRMClient\{ORGID} bzw. HKEY_LOCAL_MACHINE\SOFTWARE\… zu erstellen
| Srv/ Cli |
Typ | Schlüssel | Wert | KB-Artikel |
| S | DWORD | ExchangeAdminAccountName | SAMAccountName Property | 2820838 |
| C | DWORD | IsMapiPrivatePropertySupported |
00000001 |
2820835 |
| S | String | SchedulingEngine.CacheConfiguration | s. Artikel | 2651621 |
| DWORD | DisableFormRegions | 0 | 26914824 | |
| S | DWORD | MSCRMFIPSCompliance | 1 | 2691911 |
| C | DWORD | DisableMapiCaching | 1 | 26006403 |
| S | DWORD | TurnOffFetchThrottling | 1 | 911510 |
| S | DWORD | MaxRowsPerPage | < 5.000 | 911510 |
| S | DWORD | MaxDopForIndexCreation | 1 to 4 | 26006402 |
| S | DWORD | SortInTempDB | 1 | 26006402 |
| S | DWORD | NumThreadsForIndexCreation | 1 to 4 | 26006402 |
| S | DWORD | BatchAddAttributeUpdates | 1 | 26006402 |
| S | DWORD | EnableRetrieveMultipleOptimization | 2 | 2535245 |
| C | DWORD | AggregateQueryRecordLimit | >50.000 | Charts not showing1 |
| C | DWORD | NotificationPollInterval | 180000 (Decimal) | 2585157 |
| C | DWORD | StateManagerPollIntervall | 5 (Decimal) | 2585157 |
| C | DWORD | TagPollingPeriod | 300000 (Decimal) | 2585157 |
| C | DWORD | TagMaxAggressiveCycles | 2 | 2585157 |
| C | DWORD | ActiveCachesUpdatingPeriodMilliseconds | 1500000 (Decimal) | 2585157 |
| C | DWORD | Incremental DataCachesInclusionUpdatingPeriodMilliseconds |
300000 (Decimal) | 2585157 |
| C | DWORD | Incremental DataCachesExclusionUpdatingPeriodMilliseconds |
300000 (Decimal) | 2585157 |
| S | DWORD | DoNotIgnoreInternalEmailToQueues | 0 = false, 1 = true (will not ignore) | 953340 |
| C | DWORD | TagMinItemsForCrawl | 0 | 916566 |
| C | DWORD | TagAllowedItemsForCrawl | 20 | 916566 |
| S | DWORD | DisableSecureDecryptionKey | 1 | Link |
1 Wenn Diagramme in den Dashboards nicht korrekt angezeigt werden, stattdessen nur eine Fehlermeldung There was an error while retrieving the data from Microsoft Dynamics CRM erscheint. Der Wert sollte allerdings konform auch zentral in der MSCRM_CONFIG-Datenbank in der Tabelle DeploymentProperties in der Spalte IntColumn hinterlegt sein.
2 Einzelheiten zu den Schaltern, die sich allesamt um Upgrade Performance von CRM V4 Versionen kümmern, finden sich hier
3 In order to prevent pinned views from pulling down information to local SQL CE caches, a registry key can be set on the Microsoft Dynamics CRM 2011 Outlook clients.
4 Bei einigen Oulook-Client-Systemen tritt in der Vorschau eine unkorrekte Anzeige auf. Dies ist auf eine Fehlerhafte Konfiguration des Outlook Clients zurückzuführen und der Wert des DisableFormRegions Registrierungsschlüssels zu prüfen. Dieser steht auf 2, sollte jedoch 0 sein. Der Registrierungsschlüssel findet sich unter:
Für Outlook 2007:
HKCU\Software\Microsoft\Office\12.0\Outlook\Addins
Für Outlook 2010:
HKCU\Software\Microsoft\Office\14.0\Outlook\Addins
HKCU\Software\Wow6432Node\Microsoft
HKCU\Software\Office\Outlook\FormRegions
Technorati Tags: Microsoft – Dynamics – CRM – 2011 – Registry Keys
Microsoft Dynamics CRM | Top 100 Most Influential – DynamicsWorld
Heute sind die Ergebnisse der diesjährigen Abstimmung bekannt gegeben worden und ich darf mich bei allen, die für mich oder auch einen meiner anderen MVP-Kollegen abgestimmt haben recht herzlich bedanken.
Wieder einmal war es ein großer Spaß, sich mit meinen MVP Kollegen, vor allem aber mit der starken Dynamics NAV und AX – Fraktion zu messen.
“Hey Chris, Leon, Andrii, … – what a funny race this year and congrats to all of you. So many of us are still missed on the voting list, but all our readers, followers or team-mates know how influential we are.”
Leider wird hier noch nicht in den jeweiligen Gruppen unterschieden, aber gemeinsam mit meinen MVP Kollegen und einigen anderen Microsoft Mitarbeitern haben wir die CRM Fahne kräftig “in den Wind gehalten” und Microsoft Dynamics CRM würdig vertreten.
Technorati Tags: Microsoft – Dynamics – CRM – DynamicsWorld – UK – Top100 – Voting
Microsoft Dynamics CRM 2011 | Benutzer Arbeitszeitenkalender
Neulich bin ich gefragt worden, welche Möglichkeiten bestehen zwischen einer Arbeitszeiterfassung und Microsoft Dynamics CRM 2011 einen geeigneten Austausch von Daten zu ermöglichen.
Den meisten dürfte bekannt sein, dass innerhalb des CRM Systems für jeden Benutzer ein so genannter Arbeitszeitenkalender angelegt und auch editiert werden kann. Die Arbeitszeiten finden Anwendung bei der Planung von so genannten Services. Und da ich mich gerade intensiv mit den Möglichkeiten des Kalenders auseinandergesetzt habe, konnte ich eine Variante der Anbindung vorschlagen.
Zunächst muss man wissen, dass es via SDK durchaus Möglichkeiten gibt, Einträge in den jeweiligen Arbeitszeitenkalender vorzunehmen.
Hier finden sich einige Beispiele mittlerweile im Netz, die jedoch von einigen 1:1 übernommen werden, ohne sich der Konsequenzen bewusst zu sein.
Daher stelle ich Euch die Code-Zeilen einmal etwas ausführlicher dar.
Ein Arbeitszeitenkalendereintrag besteht immer aus einem Kalendereintrag + einem so genannten inneren Kalendereintrag.
Der Kalendereintrag kann wie folgt erzeugt werden:
// Get the calendar id of the user
Entity systemUserEntity = slos.Retrieve(“systemuser”, userid, new ColumnSet(new String[] { “calendarid”}));
// Retrieve the calendar of the user
Entity userCalendarEntity = slos.Retrieve(“calendar”, ((Microsoft.Xrm.Sdk.EntityReference)(systemUserEntity.Attributes["calendarid"])).Id, new ColumnSet(true));
// Retrieve the calendar rules defined in the calendar
EntityCollection calendarRules = (EntityCollection)userCalendarEntity.Attributes["calendarrules"];
// Create a new inner calendar
Entity newInnerCalendar = new Entity(“calendar”);
newInnerCalendar.Attributes["businessunitid"] = new EntityReference(“businessunit”, ((Microsoft.Xrm.Sdk.EntityReference)(userCalendarEntity["businessunitid"])).Id);
Guid innerCalendarId = slos.Create(newInnerCalendar);
// Create a new calendar rule and assign the inner calendar id to it
Entity calendarRule = new Entity(“calendarrule”);
calendarRule.Attributes["description"] = “Time Off Rule”;
calendarRule.Attributes["name"] = “Reason”;
calendarRule.Attributes["duration"] = 60;
calendarRule.Attributes["extentcode"] = 2;
calendarRule.Attributes["pattern"] = “FREQ=DAILY;INTERVAL=1;COUNT=1″;
calendarRule.Attributes["rank"] = 0;
calendarRule.Attributes["timezonecode"] = _timeZoneCode;
calendarRule.Attributes["innercalendarid"] = new EntityReference(“calendar”, innerCalendarId);
// starting at 12:00 on 7 May
calendarRule.Attributes["starttime"] = new DateTime(2013, 5, 7,12,0,0,DateTimeKind.Utc);
calendarRules.Entities.Add(calendarRule);
// assign all the calendar rule back to the user calendar
userCalendarEntity.Attributes["calendarrules"] = calendarRules;
// update the user calendar entity that has the new rule
slos.Update(userCalendarEntity);
Wie Ihr seht habe ich zwei Zeilen besonders hervorgehoben, da Sie in zahlreichen anderen Beispielcodes schlichtweg vergessen oder direkt gesetzt werden.
Zum Einen handelt es sich um die Angabe eines Abwesenheitsgrundes. Vergeblich sucht man in der Kalenderentität nach einem Attribut “Reason”. Hier muss schlichtweg der “Name” gesetzt werden, um im Kalender einen vernünftigen Eintrag zu erzeugen.
Zum Anderen sollte der Zeitzonencode nicht fest gesetzt werden, sondern in Abhängigkeit des Benutzers, für den ein Eintrag erzeugt werden soll.
Glücklicherweise kann man auch diese mit einfachen Mitteln auslesen.
//Retrieve TimeZoneCode
var currentUserSettings = _serviceProxy.RetrieveMultiple(
new QueryExpression(UserSettings.EntityLogicalName)
{
ColumnSet = new ColumnSet(“localeid”, “timezonecode”),
Criteria = new FilterExpression
{
Conditions =
{
new ConditionExpression(“systemuserid”, ConditionOperator.EqualUserId)
}
}
}).Entities[0].ToEntity<UserSettings>();_localeId = currentUserSettings.LocaleId;
_timeZoneCode = currentUserSettings.TimeZoneCode;
Damit jedoch nicht genug, denn es fehlt noch die Definition des inneren Kalenders.
Entity calendarRule1 = new Entity(“calendarrule”);
// duration of 60 minutes
calendarRule1.Attributes["duration"] = 60;
calendarRule1.Attributes["effort"] = 1.0;
calendarRule1.Attributes["issimple"] = true;
calendarRule1.Attributes["offset"] = 0;
calendarRule1.Attributes["rank"] = 0;
// subcode 6= vacation
calendarRule1.Attributes["subcode"] = 6;
// time code 2 = unavailable
calendarRule1.Attributes["timecode"] = 2;
calendarRule1.Attributes["timezonecode"] = -1;
calendarRule1.Attributes["calendarid"] = new EntityReference(“calendar”, innerCalendarId);
EntityCollection innerCalendarRules = new EntityCollection();
innerCalendarRules.EntityName = “calendarrule”;
innerCalendarRules.Entities.Add(calendarRule1);
newInnerCalendar.Attributes["calendarrules"] = innerCalendarRules;
newInnerCalendar.Attributes["calendarid"] = innerCalendarId;
slos.Update(newInnerCalendar);
Wenn man diesen Code nunmehr verwendet, um einen Eintrag im Arbeitszeitenkalender zu erzeugen, erhält man einen ordnungsgemäß erstellten Eintrag mit gewählter Auszeit.
Und selbst im Kalender des jeweiligen Benutzers ist der Eintrag gelistet. Etwas verwun-derlich, ist allen-falls die Tat-sache, dass nach dem Eintrag die weitere verfügbare Zeit nicht hellblau markiert ist.
Doch dies ist meiner Meinung nach lediglich ein Darstellungsfehler, den wir schon seit geraumer Zeit im System haben. (Bei manuell erstellten Einträge ist die Darstellung nämlich zu 100% identisch).
Nun habe ich im obigen Quellcode noch eine weitere Zeile hervorgehoben. Auch hierfür finden sich im SDK einige Beschreibungen:
|
Member name |
Description |
|
Appointment |
A block of time that is already scheduled for an appointment. Value = 7. |
|
Break |
A block of time that cannot be committed due to a scheduled break. Value = 4. |
|
Committed |
A block of time that is committed to perform an action. Value = 2. |
|
Holiday |
A block of time that cannot be scheduled due to a scheduled holiday. Value = 5. |
|
ResourceCapacity |
Specifies the capacity of a resource for the specified time interval. Value = 10. |
|
ResourceServiceRestriction |
A restriction for a resource for the specified service. Value = 9. |
|
ResourceStartTime |
Specifies to filter a resource start time. Value = 8. |
|
Schedulable |
A schedulable block of time. Value = 1. |
|
ServiceCost |
An override to the service cost for the specified time block. Value = 12. |
|
ServiceRestriction |
Specifies that a service is restricted during the specified block of time. Value = 11. |
|
Uncommitted |
A block of time that is tentatively scheduled but not committed. Value = 3. |
|
Unspecified |
Specifies free time with no specified restrictions. Value = 0. |
|
Vacation |
A block of time that cannot be scheduled due to a scheduled vacation. Value = 6 |
Wie es scheint können wir also noch weitere Einträge mit anderen Subcodes erstellen.
Und natürlich habe ich es mir nicht nehmen lassen, für Euch zu experimentieren. Wir nehmen als nächstes den Subcode 4 und erstellen eine Pause.
Das Arbeitszeitenmodell wird entsprechend angepasst. Die Pause ist ebenfalls berücksichtigt, wenn auch nicht angezeigt.
Wollte man die Pause gar bearbeiten und klickt auf den Arbeitszeiten-eintrag des Tages, so stellt man fest, dass die Pause hier nicht angezeigt wird.
Die Pause wird ebenfalls nicht im Benutzer-Kalender angezeigt.
Dennoch ist sie im System und wird beispielsweise von der Service-Planung berücksichtigt.
Was passiert, wenn wir mit dem Subcode 7 einen Termin erzeugen?
Wie schon bei der Pause, wird auch hier ein geändertes Arbeitszeitenprofil ausgegeben, ein Termin jedoch nicht angezeigt.
Nun könnte man meinen, es handelt sich um einen Termin, also müsste dieser in den Aktivitäten oder aber im Kalender des Benutzers zu finden sein.
Doch weit gefehlt. Weder unter den Aktivitäten, noch im Kalender des Benutzers ist dieser Termin sichtbar.
Ist der Termin also gar nicht im System?
Doch, denn auch hier ergibt ein Test mit der Service-Planung, dass für den Benutzer zu dieser Zeit kein Service-Termin geplant werden kann, da er/sie nicht verfügbar ist.
Widmen wir uns noch einem weiteren interessanten Subcode zu. In diesem Fall den Ferien (Subcode 5).
Eine Anzeige im Arbeits-zeitenkalender erfolgt. Doch will man den Eintrag verändern (Doppelklick),
so erhält man eine Fehler-meldung.
Was also, wollte man den Benutzer-Kalender anzeigen?
Auch hier erhält man eine Fehlermeldung für den kompletten Tag. Und in der Folge kann man keine Einträge für diesen Tag vornehmen.
Wer jetzt ein On-Premise-System besitzt, der kann direkt in der SQL-Datenbank die erstellten Kalender-Einträge löschen und erhält im Anschluss wieder Zugang zu dem Benutzer-Kalender. Wer hingegen eine Online-Version besitzt, der darf nunmehr mit dem Support ein Ticket bearbeiten.
Darum aufgepasst bei den SubCodes !!!
Nicht jeder Subcode der in der Beschreibung einen geeigneten Eintrag enthält, lässt sich auf diese einfache Art und Weise erzeugen.
Kommen wir nach diesem kurzen Testausflug zurück auf die mögliche Lösung zur Anbindung einer Arbeitszeiterfassung und Microsoft Dynamics CRM.
Mit obigem Beispiel können wir ein Plug-In programmieren. Wir brauchen in unserem CRM-System nunmehr noch eine Benutzerdefinierte Entität “TimeOffs”. Immer dann, wenn hier für einen bestimmten Benutzer eine “Arbeitsfreie Zeit” eingetragen wird, erstellt unser Plug-In einen Eintrag in seinem/ihrem Arbeitszeitenkalender. Auf diese Art und Weise haben wir eine Möglichkeit, per Export-/Import aus dem Arbeitszeitenerfassungssystem Einträge in unsere neue Entität zu übernehmen und diese dann in den Arbeitszeitenkalender vom CRM zu übertragen.
Hierfür benötigen wir die Felder:
Abwesenheitsgrund, Start- und Enddatum der Abwesenheit, Suchfeld zu Benutzern (zur Auswahl), Dauer.
Obiger Code muss nun noch verbessert werden, so dass die Zeitzone für den Benutzer abgefragt wird, für den eine Abwesenheit eingetragen werden soll. Und die anderen Werte sind ebenfalls dynamisch aus den jeweiligen Werten der Entität zu übernehmen.
Ich hoffe, dieses Beispiel hat Euch gezeigt, dass noch eine Menge Flexibilität im System steckt, dessen man sich (manchmal mangels Dokumentation) nicht immer bewusst ist.
Viel Spaß beim Experimentieren und bis zum nächsten Mal
Technorati Tags: Microsoft – Dynamics – CRM – 2011 – Arbeitszeitenprofil – Benutzerkalender – Arnpassungen – Tipps & Tricks
Microsoft Dynamics CRM 2011 | GeoFlow mit Excel 2013
Nach PowerPivot gibt es erneut ein interessantes Add-On namens “GeoFlow”, welches seit kurzem als öffentliche Preview verfügbar ist.
Das interessante daran ist die Nutzung einer vertrauten Umgebung (Excel und Bing Maps), um Daten einfach zu analysieren, aufzubereiten und in einer Zeitachse als eine Art “Video” betrachten zu können.
Im Excel Blog findet Ihr einen ausführlichen Artikel mit einem Fallbeispiel und allen weiterführenden Links. Ich wollte es mir nicht nehmen lassen, dieses neue Tool im Zusammenspiel mit Microsoft Dynamics CRM zu testen.
Nachdem das Add-On installiert und aktiviert ist, nutzt man im CRM System die Möglichkeit des Exports von Daten gen Excel.
Um die Lokalisierung von Daten zu ermöglichen, empfehle ich entweder die Felder Längen- und Breitengrad in den Export mit aufzunehmen (sofern Ihr geocodierte Adressen in Euren Systemen habt), oder aber zumindest Ort und Postleitzahl in die Export-Ansicht als Spalten hinzuzufügen.
Darüber hinaus solltet Ihr in Eurem Export mindestens ein Datum/Zeit-Attribut exportieren, um die Zeitachsenfunktion von “GeoFlow” nutzen zu können. Auf diese Art, könnt Ihr Eure Daten in einem Zeitraffer anschauen.
Nachdem Ihr die Daten exportiert habt, wäre es wünschenswert, wenn Ihr, wie im “Getting Started Document” beschrieben, die Schaltfläche für GeoFlow betätigen könntet. Doch beim direkten Export von Daten ist diese Option inaktiv. Ihr müsst Eure Daten daher zunächst kopieren und dann in eine neue Arbeitsmappe einfügen.
Erst danach öffnet sich die 3D Weltkugel und Ihr könnt mit der Konfiguration Eurer “Szene” beginnen.
Ein Nachteil des Kopierens ist natürlich die Tatsache, dass Ihr anschließend keine dynamischen Daten mehr habt. Ändern sich also Daten im CRM, werden diese nicht in Excel aktualisiert. Dementsprechend sind dann auch die Auswertungen nicht dynamisch.
Aber ich habe die Hoffnung, dass dies nur während der Preview der Fall ist und wir auf eine volle Unterstützung hoffen können.
Habt Ihr die Konfiguration Euren Vorstellungen entsprechend durchgeführt, so könnt Ihr die Daten auf verschiedene Art und Weise auf einer 3D-Karte darstellen.
Habt Ihr ein Datum-/Zeit-Attribut mit exportiert, so bietet Euch GeoFlow die Möglichkeit Eure Daten in einem Zeitraffer darzustellen.
Ihr habt dann eine Abspiel-Funktion und Ihr könnt Euch im Zeitraffer die Entwicklung Eurer Daten ansehen.
Als zusätzliche Darstellungsoption könnt Ihr auch die aus Bing-Maps bekannte “Heat-Map” Darstellung nutzen.
Mein persönliches Fazit: Mit GeoFlow könnt Ihr Eure Microsoft Dynamics CRM Daten in beeindruckender Art und Weise aufbereiten.
Sei es eine Heat-Map Darstellung Eurer Umsatzsstärksten Kunden, eine Darstellung aller in einem Zeitraum aufgelaufenen Support-Fälle kumuliert nach Kunde (Ort) oder auch die Effektivität Eurer durchgeführten Marketing-Kampagnen.
Wenn jetzt noch das Zusammenspiel mit Microsoft Dynamics CRM dahingehend verbessert wird, dass Ihr GeoFlow auch direkt nach dem Export starten könnt oder gleich diese Option als Export-Variante angeboten wird, entsteht ein einfach zu nutzendes Werkzeug, um die Daten imposant aufbereiten zu können.
Technorati Tags: Microsoft – Dynamics – CRM – 2011 – Excel 2013 – GeoFlow – Tipps & Tricks
Microsoft Dynamics CRM 2011 | Update Rollup 13
Das Update Rollup 13 steht für alle On-Premise Kunden zur Verfügung und bringt wichtige Hotfixes mit, die es wert sind, das Update Rollup 13 in der Produktiv-Umgebung zu installieren.
Vergesst jedoch nicht, vorher mit einer Test-Umgebung die Kompatibilität zu Eurer eingesetzten Konfiguration zu überprüfen.
Im zugehörigen KB-Artikel könnt Ihr wie gewohnt die Punkte nachlesen, die mit Update Rollup 13 gefixt werden.
Besonders möchte ich darauf hinweisen, dass mit Update Rollup 12 ein Feature veröffentlicht wurde, welches Ihr gesondert aktivieren müsst. Ihr könnt jetzt die “privat”-Markierung eines Termins in Outlook mit CRM synchronisieren.
Alle Online-Kunden sollten einen Blick in Ihr Administrationsportal werfen, wann die Aktualisierung auch hier ansteht. Alternativ dazu lohnt sich auch immer ein Blick auf den Microsoft Dynamics CRM Team Blog.
Microsoft Dynamics CRM 2011 | Ein (Aus-)Blick gen Orion
Die Convergence 2013 ist zu Ende und es wurden weitere Highlights im Zusammenhang mit Microsoft Dynamics CRM präsentiert.
Nach der Akquisition von Marketing Pilot, welches im Gemini Release im Zusammenspiel mit Microsoft Dynamics CRM erscheinen wird, wurde die nächste Akquisition verkündet. Netbreeze aus Zürich gehört nunmehr zur Microsoft Familie und wird direkt und kurzfristig in Microsoft Dynamics CRM integriert werden. Somit steht der Analyse von Social Media Kanälen innerhalb von Microsoft Dynamics CRM nichts mehr im Wege.
Natürlich wurden auch ein paar neue Screenshots vom Orion Release gezeigt, die ich Euch nicht vorenthalten möchte.
Beginnen möchte ich bei der Hauptnavigation. Über diesen Weg können wir zukünftig zwischen den Bereichen hin- und herspringen. Die 4 Ordnungsgruppen Vertrieb, Marketing, Service und Einstellungen sind geblieben.
Der Bereich Meine Arbeit wurde eingespart.
Wenn wir uns innerhalb einer Navigations-gruppe be-wegen, finden wir unsere Untergruppen innerhalb des Menübereichs.
Und wir dürfen uns – wenn auch einfarbig – wieder an Icons erfreuen, die es dem Nutzer einfach machen, zwischen verschiedenen Entitäten zu unterscheiden.
Hinweis:
Erfreulicherweise wird hier allem Anschein nach auf die bereits bekannte Größe von
32 x 32px gesetzt. Die Icons sind in einem black- und white-Schema vorzuhalten, wie man es bereits von der Windows 8 Entwicklung her kennt.
Die Listenansichten existieren auch weiterhin in Orion. Die Abstände zwischen den Zeilen haben sich bereits im Polaris Release zu Gunsten einer besseren Touch Nutzung vergrößert. Mehrere Datensätze können über ein Kontrollkästchen ausgewählt werden.
In den Listenansichten bleiben ebenfalls die Charts erhalten, die von der rechten Seite aus eingeblendet werden können und grafische Auswertungen enthalten können.
Innerhalb eines Datensatzes findet sich am oberen Bildschirmbereich die neue Hauptnavigation.
Diese ist im Polaris Release derzeit noch nicht zu sehen. Ob hier eine Änderung des Farbschemas erlaubt sein wird, bleibt abzuwarten.
Aus der Haupt-navigation heraus wird man auch wieder auf die in Beziehung stehenden Datensätze wie z.B. Aktivitäten, Beziehungen, etc. zugreifen können.
Darüber hinaus können aus diesem Menüpunkt heraus neue Aktivitäten angelegt werden. Ein Klick auf das Plus-Zeichen legt jeweils einen neuen Datensatz an und bietet hierfür eine Datenerfassungsmaske.
Und auch die MRU-Liste existiert weiterhin. Der Zugriff erfolgt auch hier aus der Hauptnavigation heraus.
Auffällig am neuen Design ist, dass man sich auf die Anzeige auf 6 Elemente innerhalb des Menüs konzentriert. Dies werden jeweils die Elemente sein, die der Nutzer am häufigsten anwendet.![]()
Und natürlich dürfen auch die Dashboards nicht fehlen. Diese stehen je nach ausgewählte Bereich (Vertrieb, Marketing, Service) zur Verfügung. Aus den Dashboards heraus kann man auch weiterhin direkt in die Datensätze springen.
Soweit ein erster Einblick auf das Orion Release. Selbstverständlich alles ohne Gewähr. Denn bis zum finalen Release können noch einige Änderungen erfolgen.
Technorati Tags: Microsoft – Dynamics – CRM – 2011 – Convergence – Orion – First Look
Microsoft Dynamics CRM 2011 | Adressauswahl weiterer Adressen
In vielen meiner Projekte werde ich immer wieder auf den Adressauswahldialog angesprochen.
Mit CRM 2011 hat sich hier der zu verwendende Quellcode leicht geändert, so dass ich in dem heutigen Artikel gern noch einmal auf die Quellcode Passagen eingehen möchte.
var parentCustomerField = Xrm.Page.getAttribute(“new_account”);
if (parentCustomerField && parentCustomerField.getValue()) {
var parentCustomer = parentCustomerField.getValue()[0];
var url = ‘/’ + Xrm.Page.context.getOrgUniqueName() +
‘/_controls/lookup/lookupsingle.aspx?class=BrowseCustomerAddress&objecttypes=1071&browse=1&bindingcolumns=line1%2cpostalcode&parentType=’
+ parentCustomer.type + ‘&parentId=’
+ parentCustomer.id + ‘&ShowNewButton=1&ShowPropButton=1&DefaultType=1071′;
var selectedAddress = window.showModalDialog(url, null, ‘dialogWidth:600px;dialogHeight:400px;resizable:yes’);
Mit obigem Code lässt sich beispielsweise eine Funktion im onLoad einer Form hinterlegen. Diese Funktion wird über eine Schaltfläche gestartet und öffnet dann das Dialogfenster zur Auswahl der zu einem Kontakt oder einer Firma hinterlegten Adresse.
Dazu muss ein Feld “new_account” auf der Form existieren, in dem auf eine Firma verwiesen wird.
Dies ist noch nicht wirklich spannend. Viel interessanter wird es schon bei der Fragestellung, wie kommt man an die Auswahl heran und kann diese für weitere Funktionen verwenden.
Idealerweise würden wir gern die ID ermitteln wollen, um damit die Adressinformationen nachladen und in unsere Form übernehmen zu können.
if (selectedAddress != null) {
var addressFields = JSON.parse(selectedAddress)
var sLookupValue = addressFields.items[0].id;
}
Hier hat sich die Logik der Lookups / Dialoge verändert und uns steht neuerdings ein JSON Objekt zur Verfügung. Wenn wir dieses also parsen, können wir mit .id einfach an unseren selektierten Datensatz gelangen.
Dies ist im Gegensatz zu früher viel einfacher, da wir nicht nur an die ID, sondern auch an alle anderen übergebenen Objekte herankommen.
In meinem Beispiel habe ich in sLookupValue nunmehr die ID und kann mit dieser weitere Abfragen im System starten.
}
else {
alert(‘No customer selected’);
}
Natürlich gehört der Quellcode noch vernünftig abgeschlossen, für all diejenigen von Euch, die dieses Script übernehmen oder testen wollen.
Technorati Tags: Microsoft – Dynamics – CRM – 2011 – Onilne – Anpassungen – Adressauswahl – JSON – JScript




