<?xml version = "1.0" encoding="UTF-8"?>

<ObjectList>
    <!-- Ordner für die Benutzergruppen der agoscript-Schulung anlegen.
    In diesen Ordner werden alle Gruppen dieser Schulung abgelegt. -->
    <FolderObject SavePoint="${agoscript-Schulung}">
        <Name>agoscript-Schulung</Name>
        <Description>Dieser Ordner enthält alle Gruppen für die agoscript-Schulung.</Description>
        <AddToFolder>/agorum/roi/Administration/Group</AddToFolder>
        <NoErrorIfExist />
    </FolderObject>
    
    <!-- Als nächstes werden wir die Gruppen anlegen. 
    Die Gruppen werden wir SavePoints zuordnen, um bei der Zuordnung der Members 
    schneller darauf zugreifen zu können. -->
    <DirectoryGroupObject SavePoint="${GRP_agoscript-Schulung-Partner_A_ALL}">
        <Name>GRP_agoscript-Schulung_Partner_A_ALL</Name>
        <AddToFolder RefType="SavePoint">${agoscript-Schulung}</AddToFolder>
        <NoErrorIfExist />
    </DirectoryGroupObject>
    <DirectoryGroupObject SavePoint="${GRP_agoscript-Schulung_Partner_A_READ}">
        <Name>GRP_agoscript-Schulung_Partner_A_READ</Name>
        <AddToFolder RefType="SavePoint">${agoscript-Schulung}</AddToFolder>
        <NoErrorIfExist />
    </DirectoryGroupObject>
    <DirectoryGroupObject SavePoint="${GRP_agoscript-Schulung_Partner_A_NOT}">
        <Name>GRP_agoscript-Schulung_Partner_A_NOT</Name>
        <!-- Hier nochmal als Beispiel eine absolute Zuordnung über den Pfad -->
        <AddToFolder>/agorum/roi/Administration/Group/agoscript-Schulung</AddToFolder>
        <NoErrorIfExist />
    </DirectoryGroupObject>
    
    <!-- Jetzt erstellen wir noch eine Gruppe, die die Gruppe READ und die Gruppe 
    ALL zusammenfasst.
	  Die einezelnen Members werden wir hier auf zwei unterschiedliche Weisen zuordnen.
	  1. Die Gruppe 'GRP_agoscript-Schulung-Partner_A_ALL' gleich beim Anlegen.
	  2. Für die Gruppe 'GRP_agoscript-Schulung_Partner_A_READ'  werden wir ein Update machen. -->
    <DirectoryGroupObject SavePoint="${GRP_agoscript-Schulung_Partner_A_AlleBenutzer}">
        <Name>GRP_agoscript-Schulung_Partner_A_AlleBenutzer</Name>
        <!-- Über <Members> werden wir jetzt die erste Gruppe zuordnen. 
        Da es eine neue Gruppe ist, gibt es hier nichts weiter zu beachten. -->
        <Members>
            <!-- Der Verweis auf die Gruppe kann einmal über den SavePoint hergestellt werden 
            oder über den Namen und den ClassName der Gruppe. 
            In diesem Fall wird über den Namen und den ClassName auf die Gruppe verwiesen. 
            
            Der Verweis über den Namen und den ClassName eines Objekts ist nur möglich, 
            wenn der Name eindeutig ist. Eine Gruppe ist vom Namen her eindeutig; es kann 
            nur eine Gruppe mit demselben Namen geben. -->
            <Ref RefType="Name" ClassName="DirectoryGroupObject">GRP_agoscript-Schulung_Partner_A_ALL</Ref>
            
            <!-- Den <Ref> - Befehl können Sie hier beliebig oft wiederholen, bis Sie alle 
            Members der Gruppe zugeordnet haben. 
            Zuordnen können Sie Gruppen und Benutzer (DirectoryUserObject) -->
        </Members>
        <AddToFolder RefType="SavePoint">${agoscript-Schulung}</AddToFolder>
        <NoErrorIfExist />
    </DirectoryGroupObject>
    
    <!-- Da die Gruppe GRP_agoscript-Schulung_Partner_A_AlleBenutzer mehrere Member hat, werden wir
    hier noch die fehlende Gruppe per Update zuordnen. -->
    
    <!-- Als erstes muss die Gruppe für einen Update gewählt werden. -->
    <DirectoryGroupObject SavePoint="${GRP_agoscript-Schulung_Partner_A_AlleBenutzer}">
        <Update RefType="Name" ClassName="DirectoryGroupObject">GRP_agoscript-Schulung_Partner_A_AlleBenutzer</Update>
        
        <!-- Ein Update kann auch per SavePoint aufgerufen werden:
      		<Update RefType="SavePoint">${GRP_XML-Script-Schulung_Partner_A_AlleBenutzer}</Update> -->
        
        <!-- Jetzt wird hier die fehlende Gruppe als Member zugerodnet. -->
        <Members>
            <!-- Der Verweis auf die Gruppe kann einmal über den SavePoint hergestellt werden 
            oder über den Namen und den ClassName der Gruppe. 
				    In diesem Fall wird über den Namen und den ClassName auf die Gruppe verwiesen.

				    Der Verweis über den Namen und den ClassName eines Objekts ist nur möglich, 
            wenn der Name eindeutig ist. Eine Gruppe ist vom Namen her eindeutig; es kann 
            nur eine Gruppe mit demselben Namen geben. -->
            <Ref RefType="SavePoint">${GRP_agoscript-Schulung_Partner_A_READ}</Ref>
            
            <!-- Den <Ref> - Befehl können Sie hier beliebig oft wiederholen, bis Sie alle 
            Members der Gruppe zugeordnet haben. 
            Zuordnen können Sie Gruppen und Benutzer (DirectoryUserObject) -->
        </Members>
        <NoErrorIfExist />
    </DirectoryGroupObject>
    
    <!-- Jetzt legen wir noch eine Gruppe anlegen, die alle Partnergruppen zusammenfasst. Für jeden neuen 
    Partner wird die Gruppe ..Partner_X_AlleBenutzer eingetragen. -->
    <DirectoryGroupObject SavePoint="${GRP_agoscript-Schulung_Partner_AlleBenutzer}">
        <Name>GRP_agoscript-Schulung_Partner_AlleBenutzer</Name>
        <Members>
            <Ref RefType="Name" ClassName="DirectoryGroupObject">GRP_agoscript-Schulung_Partner_A_AlleBenutzer</Ref>
        </Members>
        <AddToFolder RefType="SavePoint">${agoscript-Schulung}</AddToFolder>
        <NoErrorIfExist />
    </DirectoryGroupObject>
</ObjectList>