Fehlercodes

Jeder Job-Aufruf liefert einen ganzzahligen Rückgabewert: 0 bedeutet Erfolg, jeder andere Wert einen Fehler (siehe Einleitung). Diese Seite sammelt die bislang dokumentierten Fehlercodes zentral, gegliedert nach Bedeutung.

Diese Übersicht ist neu und noch nicht vollständig. Sie enthält ausschließlich Fehlercodes, die an anderer Stelle der Dokumentation oder aus konkreten Implementierungen beschrieben sind, und wird fortlaufend ergänzt. Das Fehlen eines Codes bedeutet nicht, dass er nicht auftreten kann.

Alle Codes sind ganzzahlige (INT)-Rückgabewerte desselben Mechanismus. Sie sind in der Regel nicht jobspezifisch, sondern gelten übergreifend für die Job-Aufrufe (z. B. dms.XMLInsert, dms.XMLUpdate, dms.XMLImport, dms.GetResultList, Check-in/Check-out). Die Code-Spalte führt den dezimalen Rückgabewert (vorzeichenbehaftete 32-Bit-Ganzzahl). In der Jobs-Spalte sind die gegen einen enaio®-Server verifizierten Auslöser vermerkt.

1. Jobabhängige Besonderheiten

Folgende Beobachtungen wurden direkt gegen einen Testserver verifiziert und sind beim Auswerten der Rückgabewerte zu beachten:

  • Dieselbe Fehlerursache liefert je nach Job einen anderen Code:

  • dms.XMLImport meldet XML-Strukturfehler als generisches -1. Die eigentliche Diagnose steht nur im DMSResult-Buffer, nicht im Rückgabewert. dms.GetResultList liefert dagegen spezifische Codes (-1016 / -1029).

  • Jeder Server-Namespace hat eigene Codes für Parameterfehler. Die dms.-Jobs liefern kleine, dokumentierte Codes (-1024 / -1025) oder -1; std., mng., wfm. und krn.* liefern stattdessen große, HRESULT-artige Werte (siehe Parameterfehler nach Namespace).

  • Kein-Fehler-Fälle: Manche Jobs liefern bei einer fachlich negativen Antwort dennoch 0 — das Ergebnis steckt im Ausgabewert, nicht im Rückgabewert. Beispiele: dms.GetUserData und dms.IsUserData mit unbekanntem Namen; dms.GetObjectTypeByID mit nicht existierender ObjectID (ObjectType = -1, kein Eintrag im Fehlerstack); krn.VerifyPassword mit einem Passwort, das die Passwortsyntax-Regel nicht erfüllt (Matches = false); ado.ExecuteSQL mit ungültigem SQL (return_code = 0 und leeres Ergebnis — der SQL-Fehler wird verschluckt, eine Fehlererkennung darf sich hier nicht auf den Rückgabewert verlassen); mng.GetUserRoles mit unbekannter, syntaktisch ungültiger oder Null-UserGUID (return_code = 0 und leeres Result — ein leeres Ergebnis bedeutet daher nicht zwingend „Benutzer hat keine Systemrolle"); lic.CheckLicense, wenn kein angefragtes Modul verfügbar ist (Result = 602, Grund im Fehlerstack, siehe Diagnoseeinträge bei Rückgabe 0); lic.LicGetQueueStatus mit unbekannten Modulbezeichnungen (leere Datei).

  • Fachliche Ablehnung als Fehlercode statt als Ausgabewert: krn.CheckUserAccount dokumentiert die Prüfergebnisse „Benutzer unbekannt", „falsches Passwort" und „Account gesperrt" als Werte des Ausgabeparameters Action, liefert sie in der Praxis aber als Fehlercodes (-1042218023, -1042218021, -1042218019). Ein Aufrufer darf daher nicht auf Action allein prüfen.

  • Konfigurationsabhängige Befunde: dms.XMLMove kann eine serverseitig konfigurierte Zielkapazität durchsetzen (-89 bei Überschreitung). -1012 (Register in ein eigenes Kind verschieben) war auf dem Testserver nicht reproduzierbar — der Move wurde mit return_code = 0 zugelassen; das Verhalten ist somit nicht garantiert.

2. Parameterfehler nach Namespace

Jeder Server-Namespace liefert für Parameterfehler eigene Codes, gegliedert nach Fehlerklasse. Die dms.-Jobs geben kleine, in dieser Liste dokumentierte Codes zurück; die übrigen Namespaces (std., mng., wfm., krn.*) liefern stattdessen große, HRESULT-artige Werte:

Namespace Parameter fehlt Parametertyp falsch Wert nicht unterstützt

dms.*

-1024 / -1025

-1024

—

std.*

-1043201825

-1043201825

—

mng.*

-1043332470

-1043332106

—

wfm.*

-1043332470

-1043332106

—

krn.*

-1043332470

—

-1043332107 / -1043332815

lic.*

-1043332470

—

—

Diese Tabelle ist nicht abschließend. Auch weitere Namespaces und Jobs (std., mng., wfm., lic., …) können eigene, große HRESULT-artige Werte für Parameterfehler zurückgeben.

3. Allgemeine Fehler

Code Bedeutung Jobs

-1

Allgemeiner Fehler (nicht näher spezifizierbar).

dms.XMLImport bei XML-Strukturfehlern (Details nur im DMSResult-Buffer), dms.CreateOsEvent bei bereits existierendem OS-Event (Ursache im Fehlerstack, siehe -1042609876) (verifiziert)

-2

Kein Schrank angegeben.

-4

Kein Registertyp angegeben.

-6

Kein Dokumenttyp angegeben.

-10

Erforderliche Mappen-Identifikation fehlt. Server-Meldung: The location of the object that should be inserted is unknown.

dms.XMLImport (Dokument-Insert ohne folder_id/register_id) (verifiziert)

-11

Erforderliche Dokument-Identifikation fehlt.

-12

Erforderliche Register-Identifikation fehlt.

-16

Aktualisierung der Mappe fehlgeschlagen.

-17

Aktualisierung des Dokuments fehlgeschlagen.

-18

Aktualisierung des Registers fehlgeschlagen.

-24

Der Feldname konnte nicht aufgelöst werden. Server-Meldung: The DMS field >…< could not be found.

dms.XMLImport (unbekanntes Feld) (verifiziert)

-28

Der Wert für das angegebene Feld ist nicht zulässig.

-29

Die angegebene Objekt-ID ist ungültig.

-30

Die Pflichtfelder wurden nicht ausgefüllt. Server-Meldung: Field >…< is required, but was not filled out.

dms.XMLImport (verifiziert)

-31

Der angegebene Wert entspricht nicht dem Typ auf dem Archivserver. Server-Meldung: invalid date format … / Invalid decimal format.

dms.XMLImport (ungültiger Datums-/Dezimalwert) (verifiziert)

-40

Ein Übergabeparameter ist fehlerhaft oder fehlt.

dms.ModPortfolio (unbekannte Mappen-ID)

-65

Es konnte kein Index vom Server bezogen werden.

-1004

Es wurde keine Dokumentliste angegeben.

-1006

Die angeforderte Funktionalität ist in der aktuellen Version nicht implementiert.

-1007

Beim Lesen der Objektdefinitionen ist ein Fehler aufgetreten.

-1013

Es wurde eine System-ID, aber keine Fremd-ID angegeben.

-1016

Beim Parsen des XML-Texts ist ein Fehler aufgetreten. Server-Meldung: Missing type ident attributes.

dms.GetResultList (fehlerhaftes XML / fehlendes Typ-Attribut) (verifiziert)

-1017

Bei der Validierung des XML-Texts ist ein Fehler aufgetreten.

-1018

Der XML-Text ist unvollständig.

-1024

Ein Job-Parameter fehlt oder hat den falschen Typ. Server-Meldung: A required parameter was not specified: … bzw. Parameter <…> has an invalid type: <1> instead of <2>. Bei dms.RemoveStoredQuery ohne QueryID stehen im Fehlerstack -1043332470 und -1042612199.

dms.GetObjectDetails (fehlend und falscher Typ), dms.GetObjectTypeByID, dms.RemoveStoredQuery, dms.IsUserData, dms.GetUserData (verifiziert)

-1025

Der angegebene Parameterwert ist ungültig oder fehlt. Server-Meldung: The specified parameter value is invalid / Missing argument >XML< / …not specified: QueryID. Tritt unter anderem auf, wenn der XML-Parameter als String statt binär übergeben wird; die Ursache steht dann als -1042609859 im Fehlerstack.

dms.GetResultList, dms.ExecuteStoredQuery, dms.GetStoredQuery (verifiziert)

-1027

Für ein Tabellenfeld wurden mehr Werte angegeben als Spalten vorhanden sind.

-1028

Beim Einfügen der Notiz-Objekte/-Texte ist ein Fehler aufgetreten. Tritt unter anderem auf, wenn bei Notizablage in der Datenbank ein Text über 8000 Zeichen übergeben wird (Ursache -1042611967 im Fehlerstack), und wenn UPDATE_TEXT eine Notiz trifft, deren Textdatei fehlt (Ursache -1043201745).

dms.XMLInsert, dms.XMLUpdate (verifiziert)

-1029

Ein XML-Element ist unbekannt oder falsch positioniert. Server-Meldung: Unknown or incorrectly positioned XML element: ….

dms.GetResultList (verifiziert)

-1032

Der Job wurde auf Benutzerwunsch abgebrochen.

-1033

Die angegebene Bedingung ist ungültig.

-1034

Ein XML-Attribut ist ungültig.

-1035

Ein erforderliches XML-Attribut fehlt.

-1047

Die Userdata-Angaben sind nicht eindeutig.

-1051

Das Abfrageformat wird nicht unterstützt.

-1055

Ein Ausdruck hat ein ungültiges Format.

-1056

Der Sektionsname ist ungültig.

-1057

Allgemeiner Fehler beim Lesen der Abfrage.

-1058

Unbekannter Abfragetyp.

-1060

Die Abfrage konnte nicht verarbeitet werden.

-1067

Die Volltextabfrage enthält nur Wörter, die ignoriert werden sollen.

-1068

Es ist nicht genügend Speicher verfügbar.

-1043267169

Ein als Pflicht markierter GUID-Parameter ist leer (GUID '<Parametername>' is not set).

wfm.GetRunningActivities

-1043201825

Fehlender oder typfalscher Parameter im std.*-Namespace. Großer, HRESULT-artiger Wert (siehe Parameterfehler nach Namespace).

std.GetObjectInfo

-1043332470

Fehlender Parameter (A required parameter was not specified: <Name>.). Großer, HRESULT-artiger Wert — dies ist die generische Parametervalidierung des Server-Kernels und tritt bei beliebigen Jobs auf, primär im mng.-/wfm.-/krn.*-Namespace (siehe Parameterfehler nach Namespace).

mng.GetUserAttributes, mng.SetUserAttributes (Aufruf mit ausschließlich UserGUID und Locked), wfm.GetWorkflowList, krn.EnumRJCJobs (RJC-Introspektion ohne IPAddress1/IPAddress2), krn.VerifyPassword und krn.CheckUserAccount (ohne Password), lic.LicCheckThreshold (ohne Modules), krn.NameSpaceGetJobsInfo (mit NameSpaces statt NameSpace) (verifiziert)

-1042612199

Fehlendes Argument, gemeldet von der DMS-Engine. Server-Meldung: Missing argument ><Name>< during call of job. Ursachencode im Fehlerstack, kein Rückgabewert: Er folgt dort auf -1043332470, der Job selbst liefert -1024.

dms.RemoveStoredQuery (ohne QueryID, Rückgabewert -1024) (verifiziert)

-1043332106

Falscher Parametertyp (Parameter <Name> was provided, but has an invalid type: <Ist> instead of <Soll>.). Großer, HRESULT-artiger Wert der generischen Parametervalidierung des Server-Kernels, primär im mng.-/wfm.-Namespace (siehe Parameterfehler nach Namespace). Die Typnummern stehen in den gemessenen Fällen umgekehrt zur Meldung bei -1024 (hier <2> instead of <1>, dort <1> instead of <2>); beide Formulierungen sind den jeweiligen Serverantworten entnommen.

mng.GetUserAttributes (User als INT), wfm.AdminTerminateProcess (ProcessId als INT; die Parametervalidierung weist den Aufruf ab, es wird nichts beendet) (verifiziert)

-1043332107

Ein übergebener Parameterwert ist ungültig (Parameter <Name> was provided, but the value is invalid: <Wert>.). Zweite Hälfte der generischen Parametervalidierung des Server-Kernels — anders als -1043332470 wurde der Parameter übergeben, sein Wert ist aber nicht verwertbar (leerer String, unzulässiger Wert).
Jobspezifische Ausprägung: Bei adm.ServerEventsEnumJobs ist der angeforderte Server-Event-Typ nicht an einen Job gebunden — abfragbar sind nur job-gebundene OS-Events (KernelBeforeJob, KernelAfterJob, JobBeforeObject, JobAfterObject). Globale bzw. Session-bezogene Events (OnObjectHistoryEntry, OnSessionLogin) liefern diesen Fehler.

adm.ServerEventsEnumJobs (nicht job-gebundenes Event), krn.VerifyPassword (leeres Password) (verifiziert)

-1043332815

Nicht unterstützter Parameterwert im krn.*-Namespace (info number not supported). Großer, HRESULT-artiger Wert (siehe Parameterfehler nach Namespace).

krn.GetServerInfo

4. Objekt / Ressource nicht gefunden

Code Bedeutung Jobs

-3

Angegebener Schrank unbekannt.

-5

Angegebener Registertyp unbekannt.

-7

Angegebener Dokumenttyp unbekannt. Server-Meldung: The cabinet for object >…< could not be determined.

dms.XMLImport (unbekannter Objekttyp) (verifiziert)

-13

Erforderliche Register-Identifikation unbekannt.

-14

Erforderliche Mappen-Identifikation unbekannt.

-15

Erforderliche Dokument-Identifikation unbekannt.

-22

Das angegebene/erforderliche Objekt ist unbekannt. Server-Meldung: …no object with identifier >…< could be found.

dms.XMLUpdate, dms.XMLDelete, dms.XMLMove (object_id existiert nicht) (verifiziert); dms.AddPortfolio (nicht existierendes Dokument in PortfolioXML)

-23

Die ID des angegebenen Registers existiert nicht auf dem Archivserver.

-32

Die angegebene/erforderliche Datei existiert nicht.

-1001

Der angegebene Wert konnte im zugehörigen Katalog nicht gefunden werden. Server-Meldung: Field >…< contains a catalog, but value >…< could not be found in this catalog.

dms.XMLInsert (Feldwert nicht im hinterlegten Katalog) (verifiziert)

-1019

Der angegebene Eigentümer konnte nicht ermittelt werden.

-1022

Die Referenz wurde nicht gefunden.

-1030

Ein Objekttyp wurde auf dem DMS-Server nicht gefunden. Server-Meldung: DMS object >…< in cabinet >< could not be found.

dms.GetResultList (unbekannter Objekttyp) (verifiziert)

-1031

Ein Objektfeld wurde auf dem DMS-Server nicht gefunden. Server-Meldung: The DMS field >…< could not be found. Achtung: dms.XMLImport liefert für dieselbe Meldung -24.

dms.GetResultList (unbekanntes Feld) (verifiziert)

-1044

Die übergeordnete Variante des Dokuments konnte nicht ermittelt werden.

-1046

Die Dokumentvariante konnte nicht ermittelt werden. Server-Meldung: Document with ID … could not be found … not a version.

dms.XMLImport (variantparent_id zeigt auf kein Versions- bzw. nicht existierendes Dokument) (verifiziert)

-1049

Die Abfrage wurde nicht gefunden. Server-Meldung: Saved query with ID … was not found.

dms.ExecuteStoredQuery, dms.GetStoredQuery, dms.RemoveStoredQuery (unbekannte Query-ID) (verifiziert)

-1052

Der Schrankname konnte nicht gelesen werden.

-1053

Der Dokumentname konnte nicht gelesen werden.

-1054

Der Registername konnte nicht gelesen werden.

-1062

Der Ablageort des Objekts konnte nicht ermittelt werden.

-1073

Das Objekt konnte im DMS nicht gefunden werden.

dms.ModPortfolio (nicht existierendes Dokument in PortfolioXML)

-1042218023

Der angegebene Anmeldename ist unbekannt. Server-Meldung: User name <…> is unknown. Entspricht dem dokumentierten Ausgabewert Action = 2, wird aber als Fehlercode geliefert.

krn.CheckUserAccount (verifiziert)

-1040908085

Der angegebene Benutzer wurde nicht gefunden. Server-Meldung: User not found. Requested user name: <Wert>. Der Job erwartet den Benutzernamen; eine Benutzer-GUID führt ebenfalls zu diesem Fehler.

mng.GetUserAttributes (unbekannter Benutzername oder GUID in User, gemessen an 12.0 und 10.10) (verifiziert)

-1042218742

Der angegebene Registry-Eintrag existiert nicht.

krn.REGetRegValue (verifiziert)

-1042218753

Fehler in der Ressourcenverwaltung. Server-Meldung: Error in the resource administration. Component: <Komponente>, resource: <X>, error: <n>. Bei lic.LicGetModuleInfo (Komponente GetASLicString, mit dem Zusatz Please check the entries in the OS resources table.) hat das Modul keinen Lizenzeintrag oder die Bezeichnung ist unbekannt; unter 12.0 vermeidet Flags = 1 den Fehler (siehe Module ohne Lizenzeintrag).

lic.LicGetModuleInfo (verifiziert); adm.ResourceGetState ohne ResourceType (Komponente ResourceLock) (beobachtet)

-1043201745

Die angegebene Notiz existiert nicht. Server-Meldung: Note (ID = 0x…) was not found. Neben einer unbekannten Notiz-ID auch dann, wenn die Notiz zwar existiert, ihr Text aber in der Datenbank liegt: die drei std-Remark-Jobs finden nur Notizdateien (siehe Ablageart von Notizen). Ebenso bei dwObjectType = 32767 statt des Objekttyps des DMS-Objekts.

std.GetRemark, std.DeleteRemark (verifiziert)

5. Falscher Zustand / ungültige Operation

Code Bedeutung Jobs

-8

Das angegebene Register befindet sich nicht in der angegebenen Mappe.

-9

Der angegebene Dokumenttyp ist im angegebenen Schrank nicht zulässig.

-21

Das Dokument wurde bereits archiviert.

-51

Das Dokument hat keine Seiten.

-68

Das Verschieben von Mappen ist nicht zulässig. Server-Meldung: This operation is not allowed for an object of main type >0<.

dms.XMLMove (Ordner verschieben nicht erlaubt) (verifiziert)

-89

Die Beziehung zwischen Dokument und Register ist nicht zulässig. Server-Meldung: The relationship between document and register is not allowed bzw. bei dms.XMLMove The parent folder >…< was not found… / maximum count … will be exceeded.

dms.XMLImport (Dokument an unzulässigem Speicherort); dms.XMLMove (Ziel-Ordner nicht gefunden / Zielkapazität überschritten) (verifiziert)

-90

Verweisdokumente können nicht ohne Angabe eines Ablageorts verschoben werden.

-94

Dokumentseiten sind nicht zulässig.

-1002

Das Schlüsselfeld ist nicht eindeutig. Server-Meldung: Combination >…< of key fields already exists….

dms.XMLImport (Key-Field-Kombination nicht eindeutig) (verifiziert)

-1005

Das angegebene Objekt ist mit einem Workflow-Prozess verbunden.

-1009

Das Objekt befindet sich im Papierkorb. Server-Meldung: The object is in the recycle bin.

dms.XMLDelete (Objekt bereits im Papierkorb) (verifiziert)

-1010

Das Dokument befindet sich in einem Portfolio.

-1011

Die Rekursionstiefe ist zu groß, die Aktion wurde abgebrochen.

-1012

Das Zielregister ist ein Kind des zu verschiebenden Registers.

-1014

An ein Verweisdokument können keine Seiten angehängt werden.

-1015

Das Dokument kann kein anderes Dokument referenzieren, da es Seiten besitzt.

-1020

Der Objekttyp ist für diese Operation ungültig.

-1021

Das kaskadierende Löschen ist nicht zulässig, das Objekt hat noch Kindobjekte. Server-Meldung: Cascade deletion is not allowed….

dms.XMLDelete (Objekt hat noch Kindobjekte) (verifiziert)

-1036

Es dürfen nur Dokumente aus-/eingecheckt werden. Server-Meldung: Only documents can be checked in and out….

dms.CheckOutDocument (Zielobjekt ist kein Dokument) (verifiziert)

-1037

Das Dokument wurde eingecheckt. Server-Meldung: The document was not checked out….

dms.UndoCheckOutDocument (Dokument war nicht ausgecheckt) (verifiziert)

-1038

Das Dokument wurde ausgecheckt.

-1039

Das Dokument wurde von einem anderen Benutzer ausgecheckt.

-1040

Das Dokument wurde an einer anderen Station ausgecheckt.

-1041

Das Dokument kann nicht ausgecheckt werden, da es keine Seiten besitzt. Server-Meldung: The requested document contains no pages….

dms.CheckOutDocument (Dokument ohne Seiten) (verifiziert)

-1042

Das Dokument befindet sich nicht in der Workflow-Ablage.

-1043

Das Dokument befindet sich in der Workflow-Ablage.

-1045

Neue Varianten dürfen nur für W-Dokumente erstellt werden.

-1048

Eine gleichzeitige Aktualisierung eines Objekts ist fehlgeschlagen (veralteter concurrency_timestamp / OBJECT_MODIFYTIME). Server-Meldung: A concurrent update of an object failed.

dms.XMLUpdate (verifiziert)

-1050

Die Kopie des Objekts existiert bereits am angegebenen Ablageort.

-1059

Die neue Variante wurde erstellt, konnte aber nicht auf „Aktiv" gesetzt werden.

-1061

Das Verschieben oder Verknüpfen von Objekten ist systemweit gesperrt.

-1063

Das Dokument existiert bereits am Ablageort.

-1064

Das Kopieren von Objekten mit Schlüsselfeldern ist nicht zulässig.

-1070

Es wurde als Aktion für die Trefferanzahl Error angegeben.

dms.XMLImport (Quellcode-Kommentar)

-1040906168

Das Benutzerprofil kann nicht entfernt werden. Server-Meldung: Unable to delete the profile, because it is still used by users or groups. Operation canceled. Ausgelöst durch das Schreiben eines Benutzers mit eigenem Profil (profil = 0) und geaendert="0" — der Server liest diese Kombination als „Profil entfernen". Der gesamte Job wird abgebrochen, es wird nichts geändert.

mng.SetUserAttributes (verifiziert)

-1042611991

Die angegebene Seitennummer eines Mehrfachfelds liegt ausserhalb des erlaubten Bereichs. Server-Meldung: During insertion of a value into multi-field <Name>, the given page number was found to be out of the allowed range. Erlaubt ist 1 bis zur Dateianzahl des Objekts (siehe <MultiFields>).

dms.XMLInsert, dms.XMLUpdate (verifiziert)

-1042610069

Für ein typenlos einzufügendes Dokument wurden Indexdaten angegeben. Server-Meldung: The document should be sent to the DMS without type, but index data have been specified for the document. Der Rumpf darf bei TYPELESS=1 kein <Fields> enthalten.

dms.XMLInsert (verifiziert)

-1042611918

Beim typenlosen Einfügen fehlt der Haupttyp. Server-Meldung: The document should be added without type to the workflow or user tray, but no main type was specified. maintype muss am <Object> stehen, nicht am <ObjectType>.

dms.XMLInsert (verifiziert)

-1042610059

Der Objekttyp lässt sich nicht bestimmen. Server-Meldung: There is not enough information to identify the object type. If the object should be typeless, it must be set as such. Für ein typenloses Objekt ist TYPELESS=1 zu setzen.

dms.XMLDelete (verifiziert)

-1042609917

Eine Verknüpfungsnotiz mit Text wurde abgelehnt. Server-Meldung: There are object links with text specified in the notes, but according to the server settings, only object links without text can be imported. Hängt an einer Servereinstellung; dieselbe Verknüpfung ohne Textinhalt wird angenommen.

dms.XMLInsert, dms.XMLUpdate (verifiziert)

-1042609859

Der XML-Job-Parameter wurde als String statt binär übergeben. Server-Meldung: The job parameter XML contains XML and may not be a string in unicode systems - it should be given as a binary parameter. Der Job bricht ab, es wird kein Ergebnisdokument geliefert.

dms.GetResultList und alle Jobs mit XML-Parameter (verifiziert)

-1042609854

Ein Wert eines Texttyps wurde mit OutputUnicode = 0 angefordert. Server-Meldung: Under Unicode systems the job 'GetUserData' is not allowed anymore for text values, use the job 'GetUserDataAsString' for text values instead. dms.GetUserData liefert dabei den Rückgabewert -1; bei dms.GetConfValues nennt die Meldung einen Job GetConfValuesAsString. Bei dms.GetConfValues entscheidet der Typ, nicht der Inhalt: 2 und 3 sind gesperrt, auch bei leerem Wert, und ein Aufruf mit einem gesperrten Typ in ConfTypes scheitert ganz. OutputUnicode = 1 übergeben oder dms.GetUserDataAsString bzw. dms.GetConfValuesAsString verwenden.

dms.GetUserData, dms.GetConfValues (Typen 2 und 3, darunter die AS.INI) (verifiziert)

-1042612061

Ein in der Anfrage genanntes Feld existiert am Objekttyp nicht. Ausgelöst durch einen unbekannten internal_name in <Fields> sowie durch sortpos auf einem unbekannten Feld. Der Job bricht ab.

dms.GetResultList (verifiziert)

-1042611967

Die maximale Feldlänge wurde überschritten. Server-Meldung: The maximum field length (8000) of field >MEMO< is exceeded by value (…). Erscheint im Fehlerstack von -1028, wenn bei Notizablage in der Datenbank ein Notiztext über 8000 Zeichen geschrieben werden soll. Der Server kürzt nicht, sondern bricht ab.

dms.XMLInsert, dms.XMLUpdate (verifiziert)

-1042609876

Das OS-Event existiert bereits. Server-Meldung: Os event already exists. Event code: <Code>; Class name: <Klasse>; Parameters: ><Parameter><. Ursachencode im Fehlerstack, kein Rückgabewert: Der Job selbst liefert -1, im Fehlerstack folgt nur noch 1104151584 ohne Diagnosewert. Eindeutig muss die Kombination aus EventCode, OsClassName und OsEventParams sein.

dms.CreateOsEvent (Rückgabewert -1) (verifiziert)

6. Zugriff verweigert

Code Bedeutung Jobs

-47

Der Benutzer hat nicht die erforderlichen Rechte auf dem Archivserver.

dms.ModPortfolio (nicht existierender Ordner in PortfolioXML; die Rechteprüfung läuft vor der Existenzprüfung)

-1003

Es wurde versucht, ein schreibgeschütztes Feld zu setzen.

-1008

Auf eine angeforderte Datei konnte nicht zugegriffen werden.

-1023

Das angegebene Systemfeld kann vom Benutzer nicht geändert werden.

-1026

Es ist dem Benutzer nicht möglich, die Rechteprüfung zu deaktivieren.

-1065

Das angegebene Passwort ist falsch. Server-Meldung: The password entered by user >…< does not match….

krn.SessionChangePassword (falsches altes Passwort) (verifiziert)

-1042218021

Das übergebene Passwort ist ungültig. Server-Meldung: Invalid password. Tritt sowohl bei einem falschen Passwort als auch bei falsch kodiertem Passwort auf (Klartext statt kodiertem Wert). Entspricht dem dokumentierten Ausgabewert Action = 4, wird aber als Fehlercode geliefert.

krn.CheckUserAccount (verifiziert)

-1042218019

Das Benutzerkonto ist gesperrt. Server-Meldung: Your user account is blocked. Please contact your system administrator. Wird für einen manuell gesperrten Account ebenso geliefert wie für einen durch Fehlanmeldungen gesperrten — auch bei korrektem Passwort; die beiden Fälle sind aus der Antwort nicht unterscheidbar. Entspricht den dokumentierten Ausgabewerten Action = 3 / 5, wird aber als Fehlercode geliefert.
Unterscheidbar sind die beiden Fälle über das Benutzerattribut locked (1 = manuell, 2 = durch Fehlanmeldungen; siehe Sperrverhalten) sowie über den Fehlerstack eines Kontextwechsels: Eine manuelle Sperre meldet dort -1042218150 mit derselben Meldung, eine Sperre durch Fehlanmeldungen dagegen -1042218334 bzw. -1042218331 (siehe Ursachencodes im Fehlerstack).

krn.CheckUserAccount (verifiziert)

-1042218022

Dem aufrufenden Benutzer fehlt die Systemrolle 72 (Server: Jobkontext wechseln, R_SRV_SWITCH_CONTEXT). Meldung: The system role R_SRV_SWITCH_CONTEXT is not present. Die Rolle ist notwendig und ausreichend und von allen anderen Rollen unabhängig.

krn.CheckUserAccount (verifiziert); Jobaufrufe mit $$$SwitchContextUser*$$$ (siehe Wechsel des Benutzerkontextes)

-1066

Das neue und das alte Passwort sind identisch.

-1069

Der Zugriff auf eine Systemressource wurde verweigert.

dms.GetObjectDetails (Rechteprüfung vor ID-Prüfung) (beobachtet)

-1042674726

Die Lizenz LIS fehlt, obwohl OSFTS mit intrafind verwendet wird.

vtx.OpenObjectQuery

-1040906164

Dem aufrufenden Benutzer fehlt die Systemrolle 4 (Administrator: Konfiguration Sicherheitssystem). Meldung: User {username} does not have permission to configure the security system. Please contact your administrator.
Bei aktivem Kontextwechsel wird die Rolle beim Zielbenutzer geprüft, nicht beim angemeldeten Konto.

Verändernde mng-Jobs für Benutzer und Gruppen (z. B. mng.CreateUser); mng.GetUserRoles mit der UserGUID eines fremden Benutzers (verifiziert)

31523546

Dem aufrufenden Benutzer fehlt die Systemrolle 109 (Server: Skript ausführen, R_SRV_SCRIPT_JOB). Meldung: Job <krn.RunScript> can only be executed by a user who owns the system roles [R_SRV_SCRIPT_JOB(109)]. Der Wert ist HRESULT-artig kodiert (0x1E102DA); das Low-Word 0x2DA (730) trägt den eigentlichen Fehler.

krn.RunScript (verifiziert)

7. Sammelcodes mit Ursache im Fehlerstack

Zwei Vorgänge prüfen ein Benutzerkonto, ohne den Grund der Ablehnung im Rückgabewert zu nennen: der Kontextwechsel über $$$SwitchContextUserName$$$ bzw. $$$SwitchContextUserGUID$$$ (siehe Wechsel des Benutzerkontextes) und die Anmeldung mit krn.SessionLogin. Beide liefern einen Sammelcode; warum der Zugriff scheiterte, steht ausschließlich im Fehlerstack.

Code Bedeutung Jobs

-1043332467

Sammelcode: Der Kontextwechsel ist nicht möglich. Der Code entsteht ausschließlich beim Auflösen der $$$SwitchContext…$$$-Parameter und ist für alle Ursachen identisch — er unterscheidet einen gelöschten nicht von einem gesperrten oder abgelaufenen Zielbenutzer. Die Ursache steht im Fehlerstack (siehe Ursachencodes im Fehlerstack).
Der Code betrifft nicht fachliche Benutzerparameter eines Jobs (etwa UserGUID bei mng.GetUserRoles).

Beliebige Jobs mit Kontextwechsel — verifiziert u. a. mit mng.GetUserRoles, mng.GetUserList, krn.GetServerInfo und krn.VerifyPassword (verifiziert)

1105265282

Sammelcode: Die Anmeldung der Session wurde abgelehnt. Server-Meldung: Login for user <Name> (session <GUID>) could not be executed, error: <innerer Code>. Der Wert ist positiv und HRESULT-artig kodiert. Er ist für ein falsches Passwort, einen manuell gesperrten und einen durch Fehlanmeldungen gesperrten Account identisch — die Ursache steht im Fehlerstack (siehe Ursachencodes im Fehlerstack).

krn.SessionLogin (verifiziert)

7.1. Ursachencodes im Fehlerstack

Die eigentliche Ursache trägt der erste auswertbare Eintrag des Fehlerstacks (zum Fehlerstack siehe Einleitung); Einträge ohne Diagnosewert sind unter Einträge ohne Diagnosewert aufgeführt und beim Auswerten zu überspringen.

Code Server-Meldung Zustand des Benutzers

1105265591

User GUID <X> is unknown. Context switch is not possible.

Existiert nicht oder wurde gelöscht (verifiziert)

-1042218150

Your user account is blocked. Please contact your system administrator.

Gesperrt (locked) (verifiziert)

-1042218334

User account <Name> locked. Login is not possible. — an der Stelle des Namens steht ?, wenn der Job ihn nicht auflösen kann

Durch Fehlanmeldungen gesperrt; das Attribut locked trägt noch die Markierung 2 (siehe Sperrverhalten) (verifiziert)

-1042218331

Login failed three times.

Durch Fehlanmeldungen gesperrt, nachdem ein Schreibzugriff mit mng.SetUserAttributes die Markierung locked = 2 durch 0 ersetzt hat (verifiziert)

-1042218315

Login for user <X> valid up to <Zeitpunkt>.

Gültigkeit abgelaufen (validto in der Vergangenheit) (verifiziert)

-1042218317

Login for user <X> is valid from <Zeitpunkt>.

Noch nicht gültig (validfrom in der Zukunft) (verifiziert)

Die Server-Meldung nennt immer „User GUID", auch beim Wechsel über den Benutzernamen:

  • bei $$$SwitchContextUserName$$$ steht der Name an der Stelle der GUID (User GUID NOPE_XYZ is unknown),

  • bei $$$SwitchContextUserGUID$$$ gibt der Server die GUID gar nicht zurück — die Meldung lautet dann User GUID is unknown mit leerer Stelle.

Die Meldung taugt daher nicht zur Rückgewinnung des adressierten Benutzers.

7.2. Einträge ohne Diagnosewert

Jede abgewiesene Antwort enthält zusätzlich Einträge, die keinen Hinweis auf die Ursache tragen. Eine Auswertung des Fehlerstacks sollte sie überspringen und den ersten verbleibenden Eintrag als Ursache werten.

Code Inhalt

-1043333107

SEH exception thrown at 0x…: 0xC0000005, access violation samt Stacktrace. Teil des serverseitigen Fehlerpfads, kein eigenständiger Hinweis (verifiziert)

1104151584

Leere Meldung (verifiziert)

30408714

Speicherstatistik des Serverprozesses (VirtualBytes=…) (verifiziert)

Die Reihenfolge der Einträge im Fehlerstack war in allen Messungen stabil, ist aber nicht zugesichert. Eine Auswertung sollte den Fehlerstack nach den bekannten Ursachencodes durchsuchen, statt sich auf eine feste Position zu verlassen.

8. Diagnoseeinträge bei Rückgabe 0

Einige Jobs liefern 0 und legen trotzdem Einträge in den Fehlerstack, die einen fachlich negativen Befund begründen oder vor einem Zustand warnen. Diese Codes sind keine Jobfehler; eine Fehlerbehandlung, die nur den Rückgabewert prüft, sieht sie nicht.

Code Bedeutung Jobs

1105265534

Das Modul hat keinen Lizenzeintrag. Server-Meldung: The module <X> is not licensed. Gefolgt von 1105265061.

lic.CheckLicense (Result = 602) (verifiziert)

1105265171

Unbekannte Modulbezeichnung: Die Bezeichnung fehlt im Modulkatalog (osresources, resourcetype = 0). Server-Meldung: Requested resource <X> is unknown.

lic.CheckLicense (Result = 602), lic.LicCheckThreshold (verifiziert)

1105265196

Die Lizenz (Typ N oder U) ist für die aufrufende Station nicht freigegeben. Server-Meldung: The named license <X> is not shared for station <Station>. Auch bei Lizenzen vom Typ U lautet die Meldung „named license". Gefolgt von 1105265061.

lic.CheckLicense (Result = 602) (verifiziert)

1105265061

Folgeeintrag ohne eigene Aussage. Server-Meldung: The queried resource is not available for the client. Steht nach 1105265534 und 1105265196.

lic.CheckLicense (verifiziert)

-2115959887

Warnung: Die Auslastung eines Moduls hat die Warnschwelle erreicht. Server-Meldung: Threshold of 90% reached for module <X>, current count <n>, max count <m>.

lic.LicCheckThreshold (verifiziert)

-2115960338

Warnung: Die Benachrichtigung des Administrators per E-Mail ist in der Konfiguration abgeschaltet. Server-Meldung: No e-mail can be sent to the administrator, because this feature is switched off in the configuration. Folgt auf -2115959887.

lic.LicCheckThreshold (verifiziert)