Microsoft Dynamics CRM 2011 | Unhandled Exception Sicherheitsrollen

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: role With Id = ID is listed here Does Not Exist

 

Seid auch Ihr schon in diese Fehlermeldung gerannt? Und hattet Ihr anschließend das Problem, dass Ihr Eure Anpassungen an einer Entität nicht mehr veröffentlichen konntet?

Da ich dies nun schon häufiger auf den Community Seiten beantwortet habe, erlaube ich mir heute einen Artikel hierzu zu veröffentlichen.

Anpassung_Löschen_SicherheitsrolleDamit Ihr den Vorgang besser nachvollziehen könnt, nun zur Ausgangssituation. Ihr habt eine neue Sicherheitsrolle in Eurer Entwicklungsumgebung hinzugefügt.

Anpassung_Neue_Form_mit_Sicherheitsrolle

Anschließend habt Ihr eine neue Form (in meinem Beispiel bei der Anfragen-Entität) erzeugt. Dieser neuen Form, habt Ihr neben den Sicherheitsrollen Systemadministrator und Systemanpasser auch Eure neue Rolle hinzugefügt.

Anpassung_Veröffentlichen_möglichAnschließend habt Ihr eure Anpassungen veröffentlicht und in Eurer Entwicklungsumgebung getestet.

Anpassung_ServiceformularWie gewünscht, wird den Usern mit der zugewiesenen Sicherheitsrolle die neue Form als Standard-Form angezeigt.

Im Anschluss exportiert Ihr Eure Lösung als „Nicht-Verwaltete” Lösung und importiert diese auf Eurem Produktiv-System.

Und wie es König-Zufall will, ist das letzte Update Rollup (8) noch nicht eingespielt und Ihr oder ein anderer Systemanpasser löscht die Sicherheitsrolle.

In diesem unglücklichen Fall erhaltet Ihr oben genannte Fehlermeldung.

Hinweis: Es gibt noch weitere Konstellationen in denen eine Sicherheitsrolle gelöscht werden kann und die oben genannte Fehlermeldung auftreten kann.

Bevor ich zum Lösungsansatz komme, sei der Sachverhalt noch technisch durchleuchtet.

Anpassung_XML_RoleIdsIch habe daher meine angepasste Entität einer Lösung hinzugefügt und darüber hinaus die neue Sicherheitsrolle integriert. Im Anschluss habe ich die gepackte Datei entpackt und die customizations.xml-Datei dann mit Notepad++ geöffnet.

Hier findet Ihr markiert die Abschnitte, in denen die verbundenen Sicherheitsrollen aufgeführt sind.

Und wenn eine dieser Abhängigen Komponenten gelöscht wird, ist im Anschluss ein Veröffentlichen nicht mehr möglich.

Anpassung_Löschen_Sicherheitsrolle_Hinweis_AbhängigkeitSofern wir in einem UR8 gepatchten System über die GUI den Vorgang des Löschens nachvollziehen, erhalten wir ebenfalls diesen Hinweis.

Ein Löschen der Sicherheitsrolle ist in diesem Fall erst möglich, wenn die Abhängigkeiten aus dem System entfernt worden sind.

Seid 2011 ist löschen = direktes löschen. Und eine Datenbank-Sicherung für diesen Fall wieder einzuspielen ist im Verhältnis zu anderen Lösungsansätzen ein zu großer Schritt. Darum seien nachfolgend die möglichen Ansätze aufgeführt:

 

  • Ihr habt eine Sicherung Eurer Sicherheitsrollen in einer Nicht-Verwalteten Lösung und könnt damit die Sicherheitsrolle wieder herstellen.

 

  • Ihr habt ein Entwicklungssystem von dem aus Ihr die Sicherheitsrolle ursprünglich erzeugt habt und hier ist die Sicherheitsrolle noch vorhanden –> Erstellt Euch eine Nicht-Verwaltete Lösung für Euer Problemsystem und importiert hier die Lösung.

 

  • Ihr habt keine Sicherung in Form einer Lösung. Öffnet die Problem-Form, speichert diese unter einem anderen Namen, entfernt anschließend die Problemform und veröffentlicht Eure Anpassungen

 

  • Es handelt sich um eine Systemform, die Ihr auf gewisse Sicherheitsrollen hin eingeschränkt zur Ansicht gebracht habt? Dann bleiben Euch die Alternativen:

a) Ihr exportiert die Problemform als Lösung, extrahiert die Lösungsdatei und öffnet die customizations.xml Datei. Ihr sucht die entsprechenden Abschnitte der Abhängigkeiten zu den Sicherheitsrollen. Notiert Euch die Sicherheitsrollen (Name und ID) und stellt die Sicherheitsrolle, die die Fehlermeldung verursacht manuell mit gleichem Namen und ID in Eurem System wieder her.

Hierzu ist ein Eingriff an der SQL Datenbank erforderlich, um die ID der Sicherheitsrolle entsprechend anzupassen –> Daher unbedingt eine Datenbank-Sicherung erstellen.

b) Ihr exportiert die Problemform als Lösung, extrahiert die Lösungsdatei und öffnet die customizations.xml Datei. Ihr sucht die entsprechenden Abschnitte der Abhängigkeiten zu den Sicherheitsrollen und entfernt die problemverursachende Sicherheitsrolle. Packt anschließend die Dateien wieder in eine Lösungsdatei und importiert Eure Lösung.

Anschließend sollte ein Veröffentlichen der Form wieder möglich sein.

 

Technorati Tags:

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s