Benutzer mit den meisten Antworten
Plugin InitiatingUserId entspricht nicht immer dem Calling User im CRM Frontend

Frage
-
Hallo,
wir haben ein synchrones Plugin im Einsatz, das auf Creates und Updates von Firmen reagiert. Das Plugin loggt also Änderungen am Kundenstamm. In letzter Zeit haben wir bei einem Update des Kunden Probleme beim Ermitteln des Users, der die Aktualisierung des Kunden im CRM Frontend ausgelöst hat. Bisher hat das problemlos wie folgt funktioniert.
RetrieveRequest currentUserRetrieveRequest = new RetrieveRequest();
currentUserRetrieveRequest.ColumnSet = new AllColumns();
currentUserRetrieveRequest.ReturnDynamicEntities = true;
TargetRetrieveDynamic currentUserTarget = new TargetRetrieveDynamic();
currentUserTarget.EntityId = context.InitiatingUserId; // context.UserId;
currentUserTarget.EntityName = EntityName.systemuser.ToString();
currentUserRetrieveRequest.Target = currentUserTarget;
currentUser = (DynamicEntity)((RetrieveResponse)crmService.Execute(currentUserRetrieveRequest)).BusinessEntity;Noch zur Info: Das Update läuft Pre Stage in der Parent Pipeline, der User Context des Plugin ist Calling User. Daher sollten wir über context.InitiatingUserId den User erhalten, der das Update-Event ausgelöst hat. Stattdessen bekommen wir in letzter Zeit einen AdminUser, der nicht für die ursprüngliche Änderung des Kunden verantwortlich ist.
Es sieht so aus, als würde ein anderes Plugin dazwischenfunken und den User im aktuellen Kontext ändern. Andere Plugins haben wir noch im Einsatz, die ebenfalls auf Updates, Retrieve-, RetrieveMultiple des Kunden reagieren und speziell Lookups manipulieren.
Was wir bisher versucht haben:
Die Execution Order im PluginRegistration-Tool haben wir schon geändert, also das Logging-Plugin auf Rang 1 gesetzt und alle anderen auf folgende Ränge - ohne Erfolg.
Gibt es eine Möglichkeit rauszufinden, welche Anwendung dazwischenfunkt oder ein Plugin mit Prio 1 laufen zu lassen?
Vielen Dank im Voraus!
Gruß
Rolf
Antworten
-
Hallo Rolf,
das ändern der Reihenfolge der PlugIns sollte eigentlich die Lösung sein. Habt ihr einmal nach den Anpassungen den AsyncService neu gestartet? Es kann sein, das die neue Konfiguration nicht richtig übernommen wurde, jedenfalls hatte ich mal ein ähnliches Problem bei einem Kunden, da hat der Neustart des Service das problem behoben.
Viele Grüße
Michael Sulz
MVP für Microsoft Dynamics CRM
Blog
Website- Als Antwort markiert Michael Sulz Montag, 7. Februar 2011 08:20
-
Hallo Michael,
danke für den Tip, den AsyncService hatten wir noch nicht neu gestartet. Da das Problem dringend war, haben wir es zwischenzeitlich programmatisch gelöst. Wir ermitteln den User (Domainnamen) nun aus dem HttpContext
--> HttpContext.Current.User.Identity.Name;
Spricht etwas dagegen, das im Plugin so zu machen? Würde das noch zuverlässig über IFD funktionieren?
Gruß
Rolf
- Als Antwort markiert rolf.weiglein Dienstag, 5. Juli 2011 15:43
Alle Antworten
-
Hallo Rolf,
das ändern der Reihenfolge der PlugIns sollte eigentlich die Lösung sein. Habt ihr einmal nach den Anpassungen den AsyncService neu gestartet? Es kann sein, das die neue Konfiguration nicht richtig übernommen wurde, jedenfalls hatte ich mal ein ähnliches Problem bei einem Kunden, da hat der Neustart des Service das problem behoben.
Viele Grüße
Michael Sulz
MVP für Microsoft Dynamics CRM
Blog
Website- Als Antwort markiert Michael Sulz Montag, 7. Februar 2011 08:20
-
Hallo Michael,
danke für den Tip, den AsyncService hatten wir noch nicht neu gestartet. Da das Problem dringend war, haben wir es zwischenzeitlich programmatisch gelöst. Wir ermitteln den User (Domainnamen) nun aus dem HttpContext
--> HttpContext.Current.User.Identity.Name;
Spricht etwas dagegen, das im Plugin so zu machen? Würde das noch zuverlässig über IFD funktionieren?
Gruß
Rolf
- Als Antwort markiert rolf.weiglein Dienstag, 5. Juli 2011 15:43