Error Handling

Structure and identification codes of errors that can be thrown during different processes.

Table of Contents

Introduction

Errors may occur in many different situations during data processing. In addition to the HTTP status code, yuuvis® Momentum core offers a well-defined structure and labeling of any thrown error. It is thus possible to easily localize the origin of the problem. At the same time, automated catching and analyzing of errors can be implemented based on the fixed error structure and error codes.

Error Structures

Single Errors

The errors are JSON structures with the following parameters:

ParameterDescription
httpStatusCodeThree-digit integer specifying the HTTP status code as a class of the response in which the error is returned.
serviceErrorCodeInteger specifying the concrete error type.
timeTimestamp of the error occurance in format "yyyy-MM-ddTHH:mm:ss.SSS".
messageString message describing the concrete error.
stackTrace

Origin of the error.

As of 2021 Autumn, stackTrace is included in the error structure only if the parameter app.stacktrace is set to FULL for the service throwing the error. Possible values for app.stacktrace are FULL and NONE (default). If app.stacktrace is not set for a service or set to NONE, error structures thrown by this service do not contain the stackTrace. It is recommended to set app.stacktrace in a global configuration file (i.e., application-prod.yml) such that the value applies to all services in order to unify their error structures.

serviceThe name of the service that threw the error.
tenantThe string tenant name where the error occured.
innerError (as of 2022 Winter)

Wrapped original error thrown by a webhook (find details below).

Example error with HTTP status code 409.
{
    "httpStatusCode" : 409,
    "serviceErrorCode" : 2800,
    "time" : "2021-04-21T04:36:30.813",
    "message" : "A non-empty folder cannot be deleted.",
    "stackTrace" : [ "com.os.enaio.cloud.gateway.resource.api.DmsController.deleteDmsObject(DmsController.java:719)" ],
    "service" : "api",
    "tenant" : "default"
}

Error Lists during Validation Processes

If errors occur during one of the following validation process, they are collected and returned in the validationErrors list in JSON format.

  • schema validation
  • role set validation
  • app set validation

Other validation processes return only single errors in the structure described above.

Within the JSON list validationErrors, the following parameters are provided for each error in the list:

ParameterDescription
messageString message describing the concrete error.
serviceErrorCodeFour-digit integer specifying the concrete error type.

Together with each non-empty validation error list, the HTTP status code 422 is always returned, but not specifically added to the individual entries.

The following code block shows an example error structure that can occur during a schema validation:

Example error list with HTTP status code 422.
{
	"validationErrors": [
		{
			"message": "Ambiguous IDs. There are 2 property type definitions with the ID 'from'.",
			"serviceErrorCode": 2110
		},
		{
			"message": "Wrong base ID. The base ID of the system:document type definition 'email' must be 'system:document', but it is 'system:folder'.",
			"serviceErrorCode": 2131
		},
		{
			"message": "Invalid property reference 'fromm' in type definition 'email'.",
			"serviceErrorCode": 2132
		},
		{
			"message": "Invalid secondary object type reference 'appAcl:aclowner' in type definition 'email'.",
			"serviceErrorCode": 2135
		}
	]
}

Errors Thrown by Webhooks

If a webhook throws an error in the yuuvis® Momentum error format, its individual parameters are presented as JSON substructure. The serviceErrorCode is 99999. The HTTP status code used for the final response depends on the webhook type. Errors thrown by dms.request.objects.contents webhooks, e.g., have the final HTTP status code 404.
>> Webhooks

Example error with properly structured inner error.
{
    "serviceErrorCode": 99999,
    "service": "repository",
	"messageHistory": "\nMessage History\n---------------------------------------------------------------------------------------------------------------------------------------\nRouteId              ProcessorId          Processor                                                                        Elapsed (ms)\n[insertDocumentSetR] [insertDocumentSetR] [direct://insertDocumentSet                                                    ] [      2456]\n[insertDocumentSetR] [[conan] enrich add] [bean[ref:analyzeConfigurationPr [...]",
    "innerError": {
        "httpStatusCode": 422,
        "serviceErrorCode": 12345,
        "time": "2022-11-22T14:57:41.7317312",
        "message": "Virus [XXXX] detected. See inner error for further details.",
        "service": "virus-detection-app",
        "innerError": {
            "httpStatusCode": 0,
            "serviceErrorCode": 0,
            "message": "The virus [XXX] was detected in the file [myvirus.exe]. This virus is part of SIV 1.14356.234 from 2022-03-13. See 'https://gprivate.com/61xd3'."
        }
    },
    "time": "2022-11-22T14:57:41.735",
    "stackTrace": [
        "com.os.services.hel.repo.web.RepositoryRestController.postDmsObjects(RepositoryRestController.java:88)"
    ],
    "message": "Virus [XXXX] detected. See inner error for further details.",
    "tenant": "default",
    "httpStatusCode": 422
}

If the error thrown by the webhook does not match the yuuvis® Momentum error format, the entire original error is wrapped as String message of the inner error. The serviceErrorCode is 2471 and the HTTP status code is 422.

Example error with inner error having a different structure.
{
    "serviceErrorCode": 2471,
    "service": "repository",
	"messageHistory": "\nMessage History\n---------------------------------------------------------------------------------------------------------------------------------------\nRouteId              ProcessorId          Processor                                                                        Elapsed (ms)\n[insertDocumentSetR] [insertDocumentSetR] [direct://insertDocumentSet                                                    ] [      2456]\n[insertDocumentSetR] [[conan] enrich add] [bean[ref:analyzeConfigurationPr [...]",
    "innerError": {
        "httpStatusCode": 422,
        "serviceErrorCode": 0,
        "message": "{\"wrong_body_format\":{\"httpStatusCode\":422,\"serviceErrorCode\":12345,\"time\":\"2022-11-22T15:19:52.3241064\",\"message\":\"Virus [XXXX] detected. See inner error for further details.\",\"service\":\"virus-detection-app\",\"innerError\":{\"httpStatusCode\":0,\"serviceErrorCode\":0,\"message\":\"The virus [XXX] was detected in the file [myvirus.exe]. This virus is part of SIV 1.14356.234 from 2022-03-13. See 'https://gprivate.com/61xd3'.\"}}}"
    },
    "time": "2022-11-22T15:19:52.34",
    "stackTrace": [
        "com.os.services.hel.repo.web.RepositoryRestController.postDmsObjects(RepositoryRestController.java:88)"
    ],
    "message": "Webhook response with statuscode '422' did not match the expected failure body format. Please see documentation to ensure correct webhook failure handling and have a look at the inner exception for details.",
    "tenant": "default",
    "httpStatusCode": 422
}

Any other problems related to the execution of webhooks are indicated with the serviceErrorCode 2470.

Error Codes and Messages

The following table provides an overview of errors that may occur during operation of yuuvis® Momentum core.

Note: In case you want to catch errors and analyse their content, please use the serviceErrorCode as unique identification of the error type. Please do NOT use the message since we reserve to modify it in future.

serviceErrorCodehttpStatusCodemessageOccurance
2100-The ID '%s' is invalid. If the ID has a prefix, it is not allowed to start with 'ten' or 'app'.schema validation
2101-The ID '%s' is invalid. If the ID has a prefix, it is expected to be '%s'.schema validation
2102-The ID '%s' is invalid. The ID of an object type is not allowed to start with '%s'.schema validation
2103-The ID '%s' is invalid. The ID of a property type is not allowed to start with '%s'.schema validation
2104-Too many property types. There are %s property types. Up to %s are allowed. This is a configurable limit.schema validation
2105-There are references from the global schema to the schema of app '%s'. For tenant '%s' app '%s' is disabled.schema validation
2106-There are references from the schema of app '%s' to the schema of app '%s'. For tenant '%s' app '%s' is enabled and app '%s' is disabled.schema validation
2110-Ambiguous IDs. There are %s %s type definitions with the ID '%s'.schema validation
2111-Missing ID. There is a %s definition without ID.schema validation
2112-Invalid ID. There is a %s with the invalid ID '%s'. The ID must match '%s'.schema validation
2113-ID too long. The maximum length for an ID is %s without prefix. The length of '%s' is %s.schema validation
2120-Missing property type. The attribute 'propertyType' of the property type definition '%s' is missing.schema validation
2121-Wrong property type. The property type of the %s property type definition '%s' must be '%s',  but it is '%s'.schema validation
2122-Invalid attribute 'queryable' in the %s property type definition '%s'. The value 'false' is only supported for table property type definitions.schema validation
2123-Illegal minimum length of the property '%s'. The minimum length of a string property must not exceed %s.schema validation
2124-Illegal maximum length of the property '%s'. The maximum length of a string property must not exceed %s.schema validation
2125-Illegal cardinality of the property '%s'. The cardinality of a table property must not be 'multi'.schema validation
2126-Invalid number of column property definitions for property '%s'. The maximum number of columns in a table must not exceed %s. Column count: '%s'schema validation
2127-Illegal cardinality of the property '%s'. The cardinality of a structured data property must not be 'multi'.schema validation
2130-Missing base ID. The attribute 'baseId' of the type definition '%s' is missing.schema validation
2131-Wrong base ID. The base ID of the %s type definition '%s' must be '%s',  but it is '%s'.schema validation
2132-Invalid property reference '%s' in type definition '%s'.schema validation
2134-There are %s property references with the value '%s' in the definition of the object type '%s'.schema validation
2135-Invalid secondary object type reference '%s' in type definition '%s'.schema validation
2136-Secondary object type '%s' in type definition '%s' can be referenced only once.schema validation
2140-

The document type '%s' does not allow content and has a static reference to the secondary object type '%s' that requires content. It is not possible to create instances of this document type.

schema validation
2141-The document type '%s' does not allow content and has a non-static reference to the secondary object type '%s' that requires content. This secondary object type cannot be assigned to instances of this document type.schema validation
2142-The document type '%s' requires content and has a static reference to the secondary object type '%s' that does not allow content. It is not possible to create instances of this document type.schema validation
2143-The document type '%s' requires content and has a non-static reference to the secondary object type '%s' that does not allow content. This secondary object type cannot be assigned to instances of this document type.schema validation
2144-The document type '%s' has static references to secondary object types that require content ('%s') and that do not allow content ('%s'). It is not possible to create instances of this document type.schema validation
2145-The document type '%s' has static references to secondary object types that require content ('%s') and non-static references to secondary object types that do not allow content ('%s'). These non-static secondary object types cannot be assigned to instances of this document type.schema validation
2146-The document type '%s' has static references to secondary object types that do not allow content ('%s') and non-static references to secondary object types that require content ('%s'). These non-static secondary object types cannot be assigned to instances of this document type.schema validation
2150-The folder type '%s' has static references to secondary object types that require content ('%s'). It is not possible to create instances of this folder type.schema validation
2151-The folder type '%s' has non-static references to secondary object types that require content ('%s'). These non-static secondary object types cannot be assigned to instances of this folder type.schema validation
2152-The folder type '%s' has static references to secondary object types that allow content ('%s'). It is not possible to create instances of this folder type.schema validation
2153-The folder type '%s' has non-static references to secondary object types that allow content ('%s'). These non-static secondary object types cannot be assigned to instances of this folder type.schema validation
2200422Empty lists are not allowed. The property '%s' has an empty list as value.schema validation
2201422The cardinality of the property '%s' is 'multi',  but the value is not a list: %s.schema validation
2202422The cardinality of the property '%s' is 'single',  but the value is a list: %s.schema validation
2203422Illegal number of values. The cardinality of the property '%s' is 'single',  but there are multiple values: %s.schema validation
2204422Null values are not allowed in lists. Property ='%s'schema validation
2210422Illegal property value. The property '%s' is a boolean property and is unable to accept the value '%s'.schema validation
2211422Illegal property value. The property '%s' is a datetime property and is unable to accept the value '%s'.schema validation
2212422Illegal property value. The property '%s' is a decimal property and is unable to accept the value '%s'.schema validation
2213422Illegal property value. The property '%s' is an ID property and is unable to accept the value '%s'.schema validation
2214422Illegal property value. The property '%s' is an integer property and is unable to accept the value '%s'.schema validation
2215422Illegal property value. The property '%s' is a string property and is unable to accept the value '%s'.schema validation
2216422Malformed table. The property part 'columnNames' of the table property '%s' is expected to be a list of strings. ColumnNames: '%s'schema validation
2217422Malformed table. The value of the table property '%s' is expected to be a list. Table value: %sschema validation
2218422Malformed table. A row of the table '%s' is not a list. Row: '%s'schema validation
2219422Illegal property value. The value of the structured data property '%s' is expected to be a list or map. Value: %sschema validation
2220422Invalid JSON. The value of the structured data property %s must be valid JSON. Value = '%s'. Error message: %sschema validation
2240422Illegal property value. The property '%s' is a datetime property with resolution 'date' and is unable to accept the value '%s'.schema validation
2250422The decimal value %s is not valid. The type '%s' does not permit values smaller than %s.schema validation
2251422The decimal value %s is not valid. The type '%s' does not permit values larger than %s.schema validation
2260422The integer value %s is not valid. The type '%s' does not permit values smaller than %s.schema validation
2261422The integer value %s is not valid. The type '%s' does not permit values larger than %s.schema validation
2270422String value is too short. The type '%s' permits only strings with a length of at least %s. The length of '%s' is %s.schema validation
2271422String value is too long. The type '%s' permits only strings with a length up to %s. The length of '%s' is %s.schema validation
2272422String value is too long. A string property permits only strings with a length up to %s. The property '%s' has a value with the length %s: '%s'.schema validation
2280422Illegal column. A table of type '%s' cannot have a column named '%s'.schema validation
2281422Illegal column names. The column '%s' occures %s times.schema validation
2282422Malformed table. The maximum number of rows in a table must not exceed %s. Row count: '%s'schema validation
2283422Invalid row. The row of a table property '%s' is expected to contain exactly %s entries,  but row no. %s contains %s entries.schema validation
2290422Structure data value too large. The value of the property '%s' contains %s sub-values. Only up to %s are allowed.schema validation
2291422Structured data value too deep. The value of the property '%s' has a depth of %s. The maximum depth is %s.schema validation
2292422Invalid value of structure data property '%s'. Non-string key found: '%s'.schema validation
2293422Key too long. The length of the key '%s' in the value of the structured data property '%s' is %s. The maximum length is %s.schema validation
2294422Invalid key '%s' in the value of the structured data property '%s'. The key must match the regex '%s'.schema validation
2300422A required property is missing. property='%s'schema validation
2470422Webhook execution resulted in an unexpected failurewebhook execution
2471422

Webhook response with statuscode '%s' did not match the expected failure body format. Please see documentation to ensure correct webhook failure handling and have a look at the inner exception for details.

webhook execution
2880-Unable to disable app '%s'. There are references from the tenant schema to the schema of app '%s'.

app set validation

2881-Unable to disable app '%s'. There are references from the global schema to the schema of app '%s'.app set validation
2882-Unable to disable app '%s' and enable app '%s'. There are references from the schema of app '%s' to the schema of app '%s'.app set validation
2900403Method not allowed for tenant independent accounts.authentication
2901403External access is not allowed for the service account.authentication
2902403External access is not allowed for this endpoint.

authentication

2903422Could not create JWT. Cause [%s]

authentication

2950500Could not write audit entry. Cause [%s]audit
2951500Database unreachable. Cause [%s]audit
99999depends on webhook type

<custom message>

webhook execution


Read on

Schema - Defining Object Types

Detailing the available schema, object type definitions as well as property definitions. Keep reading

Apps

Management of apps that are based on yuuvis® Momentum via schema, permissions, system hook configuration and availability configurations. Keep reading

Tagging

The basic idea for the usage of tags is to describe the state of an object within a process chain. They basically consist of a name and a state value and can be assigned to any object. Keep reading