21.11.2014

Get all users of a security role


In CRM gibt es leider keine Standardfunktion um alle Benutzer zu ermitteln, die eine bestimmte Sicherheitsrolle innehaben. Mit Hilfe von FetchXML kann man dieses Problem relativ einfach lösen. Folgende Schritte sind dazu notwendig:

1. Ermitteln der GUID der Sicherheitsroll
Hierfür öffnet man die Sicherheitsrolle im Browser und kopiert sich die GUID einfach aus der Adresszeile des Browsers.

2. FetchXML ans CRM schicken

Mit einem Tool wie der ToolBox for CRM kann man einen Fetch an das CRM schicken und erhält dafür das Ergebnis-XML präsentiert. Das FetchXML muss wie folgt aussehen. Anpassungen an den Attributes können natürlich nach Belieben vorgenommen werden und [GUID] muss natürlich mit der in Schritt 1 ermittelten GUID ersetzt werden.

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false" >
    <entity name="systemuserroles" >
        <attribute name="systemuserroleid" />
        <attribute name="roleid" />
        <filter type="and" >
            <condition attribute="roleid" operator="eq" value="[GUID]" />
        </filter>
        <link-entity name="systemuser" from="systemuserid" to="systemuserid" alias="user" >
            <attribute name="systemuserid" />
            <attribute name="firstname" />
            <attribute name="lastname" />
            <attribute name="domainname" />
        </link-entity>
    </entity>
</fetch>

Möchte man die Benutzer einer Sicherheitsrolle über alle BUs hinweg bestimmt, darf man im FetchXML nicht über die GUID filtern, sondern muss den Filter anhand des Names der Sicherheitsrollen setzen. Im folgenden Fetch muss dann [NAME] durch den entsprechenden Rollennamen ersetzt werden.

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false" >
    <entity name="systemuserroles" >
        <attribute name="systemuserroleid" />
        <attribute name="roleid" />
        <link-entity name="role" from="roleid" to="roleid" alias="role" >
            <attribute name="name" />
            <filter type="and" >
                <condition attribute="name" operator="eq" value="[NAME]" />
            </filter>
        </link-entity>
        <link-entity name="systemuser" from="systemuserid" to="systemuserid" alias="user" >
            <attribute name="systemuserid" />
            <attribute name="firstname" />
            <attribute name="lastname" />
            <attribute name="domainname" />
        </link-entity>
    </entity>
</fetch>


3. Ergebnis verarbeiten
Wenn man das XML als Datei abspeichert, kann man diese in Excel öffnen und hat die gewünschte Liste aller Benutzer einer Sicherheitsrolle.