# Benutzer über die Server-API anlegen

**URL:** <https://ecm.community/t/benutzer-ueber-die-server-api-anlegen/576>\
**Category:** enaio®\
**Tags:** coding, howto\
**Created:** [21. Juni 2024 um 11:24 UTC](https://ecm.community/t/benutzer-ueber-die-server-api-anlegen/576 "2024-06-21T11:24:34Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ag](https://ecm.community/user_avatar/ecm.community/ag/32/687_2.png) [@ag](https://ecm.community/u/ag)\
**Post date:** [21. Juni 2024 um 11:24 UTC](https://ecm.community/t/benutzer-ueber-die-server-api-anlegen/576/1 "2024-06-21T11:24:34Z")

</div>

Nachdem ich mich gerade verwirren habe lassen, hoffe ich mich diesem Beitrag jemand anderen frühzeitig zu entwirren 😉

In der englischsprachigen Doku der enaio Server-API ist das Beispiel für das hinzufügen eines Users so angegeben:

```xml
<AdmInfo>
<Users>
<User account_type="0" comment="" user="TESTUSER" flags="1"
changed="1" langid="0" locked="0" logincount="0"
loginstation="" logintime="0" name="Peter Muster"
osemail=""
password="B62441422712357307" profile="-1" server_id="3"
station="" supervisor="0" validfrom="" validto="">
</User>
</Users>
</AdmInfo>

```

Mit diesem Beispiel konnte ich keinen User anlegen, da ich immer wieder die Fehlermeldung bekommen habe, dass `name` leer sei, oder ungültige Zeichen enthalte.  
Nachdem ich festgestellt habe, dass in der deutschsprachigen Doku manche der Felder (comment = bemerkung, user = benutzer, changed = geaendert) anders heissen und ich die Attribute entsprechend übersetzt hatte, konnte ich User anlegen. Hier das deutschprachige Beispiel aus der Doku zum Vergleich:

```auto
<AdmInfo>
<Users>
<User account_type="0" bemerkung="" benutzer="TESTUSER" flags="1"
geaendert="1" langid="0" locked="0" logincount="0"
loginstation="" logintime="0" name="Peter Muster"
osemail=""
passwort="B62441422712357307" profil="-1" server_id="3"
station="" supervisor="0" validfrom="" validto="">
</User>
</Users>
</AdmInfo>

```

Hier ein Auszug aus meinem Python-Code, mit dem die Benutzeranlage geklappt hat:

```python

for index, user in transformed_df_benutzer.iterrows():    
    combined_name = f"{user['Vorname']} {user['Name']}"
    query_xml = X.from_object(
        'AdmInfo', {
            'Users': {
                'User':{
                    '@account_type': '0',
                    '@bemerkung': '',
                    '@benutzer': user['Benutzername'],
                    '@flags': '0',
                    '@geaendert': '0',
                    '@langid': '1',
                    '@locked': '0' if user['Inaktiv'] == 'Nein' else '1',
                    '@logincount': '0',
                    '@loginstation': '',
                    '@logintime': '0',
                    '@name': combined_name,
                    '@osemail': user['EMail'],
                    '@password': user['Passwort'],
                    '@profile': '-1',
                    '@server_id': '1',
                    '@station': '',
                    '@supervisor': '0',
                    '@validfrom': '',
                    '@validto': '',
                    }
                }
            }
    )
    string = query_xml.to_string()
    job = Job("mng.CreateUser", UserInfo=query_xml, HasEncoding=True, Flags=0)
    result = enaio.execute(job)
    if result:
        logging.info(f"user { user['Benutzername']} was created.")

```
