CreateCaseInDB Interface

COMPASS Version 6.2, 6.3, 6.4 © General Re Corporation 2021 - 2026. All Rights Reserved (created: 2026-06-16 generated: 2026-07-10)

Introduction

Starting with version 6.2 Compass offers a REST Service that builds a XML Case (also called Input Interface) and writes it into the c40_casedata table. The input for this service is a JSON formatted body of the service. The utility is designed for a Case containing technical data only/mostly.

POST /createCaseInDB

Converts a JSON formatted Case description to a XML Case and writes it to the database.

Table 1. Service Call Parameters
Parameter Description

caseId

Id of the case to be created - corresponds to the column rex_CaseId in the c40_casedata table

subId

ID of the Subsystem in which the case will be persisted in the database - corresponds to the column rex_SubID in the c40_casedata table

loggingArea

Logging-Area of the COMPASS Kernel

Table 2. JSON formatted Body
Type Description

CaseDto

A JSON formatted description of the case. Main purpose of this document is the description of this structure. See JSON Body

Table 3. Output Fields
Path Type Description

responseEntity

ResponseEntity

the HTTP Response for this operation; a generic format used by many COMPASS REST services. See Output Fields

CaseDto encapsulates certain information that is being converted into a specific Case. This is typically the technical information of a case (benefit details, basic details about the persons involved), but can also contain further information that typically is considered risk-relevant, like height, weight, sports, etc.

Upon invocation of this service with the parameters mentioned in Table 1, an XML Case will be generated in the c40_casedata table, if the provided input JSON does not contain any errors. The caseId will be mapped to the database table column rex_CaseID and likewise the subId will be mapped to the database table column rex_SubID.

Table 4. Sample Request

POST /createCaseInDB?caseId=Test0001&subId=TEST

Body
{
    "cspSetId": "1",
    "pos": true,
    "caseId": "Test0001",
    "locale": "en",
    "complete": false,
    "techSource": {
        "sourceTypeId": 100,
        "complete": true
    },
    "application": {
        ....
    }
}
Response
{
    "path": "/compass/createCaseInDB",
    "status": 0,
    "statusText": "OK",
    "errorDescriptions": [],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

JSON Body

In this section we discuss the format of the JSON Body to be passed to the createCaseInDB service.

Data Semantics

With the passed JSON Body Compass will build a XML Case. This Case consists of the high level XML-elements Benefit, EventPayment, Payment and several CaseObjects, of which we will focus on the following:
Application, Assured person (AP), Policy Holder (PH) and Pre-existing Insurance from Application. As it is sometimes required when building the technical Case, the CaseObjects Disorder, Occupation and Pursuit are also included.
The newly built Case will also contain one Source-element.

The JSON has a correspondence to these XML-elements:

XML JSON DTO

Case

top element (not named)

CaseDto

CaseObject Application

application

ApplicationDto

Benefit
EventPayment
Payment

These 3 are grouped in one "requestedBenefit". As there can be more than one "requestedBenefit", it became an array called requestedBenefits

BenefitDto

CaseObject AP
CaseObject PH

These elements are represented by a "person". As there can be more than one, it became an array called persons

PersonDto

CaseObject Pre-existing Insurance from Application

These elements are represented by a "existingCoverInPortfolio". As there can be more than one, it became an array called existingCoversInPortfolio

CoverInPortfolioDto

CaseObject Occupation

This element is represented by occupation. As there is no more than one for a person, it didn’t become an array.

OccupationDto

CaseObject Pursuit

These elements are represented by a "pursuit". As there can be more than one, it became an array called pursuits

PursuitDto

CaseObject Disorder

These elements are represented by a "disorder". As there can be more than one, it became an array called disorders

DisorderDto

Source

The SourceType is represented by the top-level attribute techSource

SourceDto

The input data structure consists of nested data structures which looks as in Figure 1

input_structure
Figure 1. Input Data Structure

Each Case contains an application and an application contains a list of persons. Each person can be an assured person and/or a policy holder. Each of these persons can then contain an occupation and a list of pursuits, disorders, requestedBenefits and existingCoversInPortfolio.

Each of these elements has a number of possible attributes, like a person has an age, a gender, a name. The permitted attributes for each type are presented in the following chapter.

The elements and their attributes

The relations between the elements has already been presented in figure 1.
Figure 2 presents the attributes for each element type:

components tree
Figure 2. Component Compositions

Note that the elements and their corresponding attributes marked with asterisk ("*") are mandatory and the attributes marked with
("[0..1]") are optional.

Moreover there are special logical rules for some of the components and attributes, e.g. whether one or several specific attributes must be provided given that another attribute is provided. These logical rules must be taken into account when providing the attributes for a specific element. Detailed information about these logical rules are provided in the corresponding sections. As a general rule we can state that when mandatory attributes of an element are not provided an error message will be returned.

Top element: Case

As can be seen in figure 2 the top element contains 7 proper attributes:

attribute name mandatory default value format comment

cspSetId

Yes

 — 

integer

ID of a CSP-Set

pos

No

false

false/true

true: application will be a POS-Case; otherwise a HeadOffice case

locale

Yes

 — 

String

2 or 4 Byte Locale: e.g. "en" or "nlBE"

complete

No

false

false/true

sets the complete attribute in the Case-XML element:
true becomes Yes; false becomes No.

caseId

Yes

 — 

String

Name of the application to be created. Should be identical to the service call parameter caseId

techSource

Yes

 — 

see techSource-element

application

Yes

 — 

see application-element

Example: A call with the following JSON results in a Case with Source and Application-CaseObject Elements
Request:

{
    "cspSetId": "1",
    "pos": true,
    "caseId": "Test0001",
    "locale": "en",
    "complete": true,
    "techSource": {
        "sourceTypeId": 100,
        "complete": true
    },
    "application": {
        "ownPortfolioAvailable": true,
        "persons": [{
          ...
        }],
        ...
}

Created XML Case

<Case Complete="No" CaseMode="POS" CSP="1" Id="Test0001" Locale="en">
	<Source Complete="Yes" TypeId="100" Id="1" RelatedCaseObject="0" TypeIdName="Tech Data" DefaultSource="Yes"/>
	<CaseObject Id="0" TypeId="25" TypeIdName="Application">
		<CaseAttribute TypeId="0" TypeIdName="application-ID">
			<CaseAttributeValue>
				<StringValue Value="Test0001"/>
			</CaseAttributeValue>
		</CaseAttribute>
		<CaseAttribute TypeId="38" TypeIdName="own_prev_assess_present (y/n)">
			<CaseAttributeValue>
				<DBRefValue Name="Yes" Id="1"/>
			</CaseAttributeValue>
		</CaseAttribute>
	</CaseObject>

techSource

The techSource element defines a technical SourceType. It will become a Source in the newly created Case. It contains 2 attributes:

attribute name mandatory default value format comment

complete

No

false

false/true

sets the complete attribute in the Source-XML element:
true becomes Yes; false becomes No.

sourceTypeId

Yes

 — 

integer

ID of the technical SourceType

For an example see section Top element: Case

application

The application element defines the top CaseObject Application. It will become the Application-CaseObject in the newly created Case. It contains 2 or 3 attributes:

attribute name mandatory default value format comment

ownPortfolioAvailable

No

false

false/true

sets the CaseAttribute with typeID 38 in the Application-XML element:
true becomes Yes; false becomes No.

attributes

No

 — 

see attributes-element. Allows the setting of further attributes of the Application-CaseObject.

persons

Yes

 — 

see persons-list-element. List has to contain at least one element.

For an example see section Top element: Case

persons

The persons list contains one element per person involved in the application. Each person can be an assured person, a policy holder, or both. As such this mandatory list contains at least one element (one person).

Each element contains the following attributes:

attribute name mandatory format comment

id

Yes

String

ID of the current person - to be set by the insurance company

name

Yes

String

name of the current person

ap

Yes

false/true

true: current person is an assured person
false: current person is not an assured person (therefore a policy holder)

ph

Yes

false/true

true: current person is a policy holder
false: current person is not a policy holder (thus an assured person)

age

Yes

integer

age in years of the current person

gender

Yes

integer

2: male
3: female
4: divers
further values possible, as defined in the rules

maritalStatus

No

integer

1: single
2: married
further values possible, as defined in the rules

residenceCountry

No

String

Country-Code as defined in the rules (D for Germany)

nationality

No

String

Country-Code as defined in the rules (D for Germany)

occupation

No

see pursuits, disorders, occupation-section. Allows the definition of an Occupation-CaseObject for the current person.

requestedBenefits

No

see requestedBenefits-element. Allows the definition of benefits (in the Case-XML a triple Benefit/EventPayment/Payment) where the current person is the assured life.

existingCoversInPortfolio

No

see existingCoversInPortfolio-element. Allows the definition of the AP’s existing benefits with the current insurance company via Pre-existing Insurance Portfolio-CaseObjects.

pursuits

No

see pursuits, disorders, occupation-section. Allows the definition of Pursuit-CaseObjects for the current person.

disorders

No

see pursuits, disorders, occupation-section. Allows the definition of Disorder-CaseObjects for the current person.

attributes

No

see attributes-element. Allows the setting of further attributes of the AP- or PH-CaseObject.

Example: the following persons list creates an AP-CaseObject
Request:

"persons": [{
       "id": "007",
       "name": "James Bond",
       "ap": true,
       "ph": false,
       "age": 35,
       "gender": 2,
       "maritalStatus": 2,
       "residenceCountry": "D",
       "nationality": "D"
}
…
]

Created AP-CaseObject

…
<CaseObject Id="23" TypeId="27" TypeIdName="AP">
	<CaseAttribute TypeId="307" TypeIdName="id_no (person)">
		<CaseAttributeValue>
			<StringValue Value="007"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="44" TypeIdName="name">
		<CaseAttributeValue>
			<StringValue Value="James Bond"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="21" TypeIdName="age at application">
		<CaseAttributeValue>
			<SingleValue UnitName="Year(s)" Value="35" Unit="16"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="73" TypeIdName="sex">
		<CaseAttributeValue>
			<DBRefValue Name="Male" Id="2"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="78" TypeIdName="marital_status">
		<CaseAttributeValue>
			<DBRefValue Name="Married" Id="2"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="176" TypeIdName="residence (country)">
		<CaseAttributeValue>
			<DBRefValue Name="Germany" Key="D" Locale="en"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="61" TypeIdName="nationality">
		<CaseAttributeValue>
			<DBRefValue Name="Germany" Key="D" Locale="en"/>
		</CaseAttributeValue>
	</CaseAttribute>
…

requestedBenefits

The requestedBenefits list contains one element per benefit/cover the current person is applying for. Each benefit will become a triple Benefit/EventPayment/Payment in the Case-XML. Each Assured Person (AP) will have at least one element (one benefit) in this list.

Each element contains the following attributes:

attribute name mandatory default value format comment

benefitType

Yes

 — 

integer

ID of benefit as defined in the rules

smokerType

No

 — 

integer

ID of a smoker-type as defined in the rules. Will be defined in the CaseAttribute with ID 94

benefitName

Yes

 — 

String

Name of the benefit. Will be defined in CaseAttribute with ID 108

singleLife

No

 — 

false/true

sets the CaseAttribute with ID 355. true becomes 3, false becomes 1

lifeBasicForm

No

 — 

integer

Type of life-benefit. Will be defined in CaseAttribute with ID 271

premiumPaymentYears

No

 — 

integer

Years that the premium will be paid. Will be defined in CaseAttribute with ID 41

premiumPaymentAnnual

No

1 [currency]

integer

Amount paid per year as a premium. Will be defined in CaseAttribute with ID 354

singlePremium

No

 — 

integer

Amount paid as a single premium. Will be defined in CaseAttribute with ID 15

insurancePeriodYears

Yes

 — 

integer

Years that the insurance will be valid. Will be defined in CaseAttribute with ID 121

limitGroup

Yes

 — 

integer

ID of a limit-group/examination-group as defined in the rules. Will be defined in CaseAttribute with ID 333

benefitSum

No

 — 

integer

Regular amount paid per month. Will be defined in CaseAttribute with ID 222

sumInsured

No

 — 

integer

Sum insured / lumpsum. Will be defined in CaseAttribute with ID 103

disabilityPaymentYears

No

 — 

integer

Duration of the disability payment in years. Will be defined in CaseAttribute with ID 105

disabilityWaitingPeriodWeeks

No

 — 

integer

For disability payments the waiting period in weeks. Will be defined in CaseAttribute with ID 316

attributes

No

 — 

see attributes-element. Allows the setting of further attributes of the Benefit- or EventPayment- or Payment-elements.

Special rules that apply to the conversion of benefits

  • one of the fields benefitSum or sumInsured must be stated with a value > 0. The service will check if this value corresponds to the benefit-type.
    The one CaseAttribute will be created with the passed sum, while the other is created with a sum of 0.

  • the created XML-element EventPayment will set its age-attributes (CaseAttributes with IDs 37 and 292) with the value of age from the person.

  • the attributes singleLife and lifeBasicForm are required when it is a life-benefit.

  • the attributes disabilityPaymentYears and disabilityWaitingPeriodWeeks are required for disability benefits.

  • an attribute found in the attributes section will be transferred to the element Benefit, EventPayment or Payment, depending on where it makes sense.

Example: Creating a Life benefit

Details

Request:

"requestedBenefits": [{
      "benefitType": 0,
      "smokerType": 2,
      "benefitName": "Vita",
      "singleLife": false,
      "lifeBasicForm": 3,
      "premiumPaymentYears": 10,
      "premiumPaymentAnnual": 5000,
      "singlePremium": 1500,
      "insurancePeriodYears": 10,
      "sumInsured": 10000,
      "limitGroup": 1001,
      "disabilityPaymentYears": 10,
      "disabilityWaitingPeriodWeeks": 4,
      "attributes": {
         "12": {
             "value": "0.0",
             "unit": 12
         }
      }
  }]

Created Benefit, Payment and EventPayment Elements as a result of provided requestedBenefits

<Benefit Id="78" TypeId="0" TypeIdName="Benefit">
	<CaseAttribute TypeId="355" TypeIdName="life policy-type">
		<CaseAttributeValue>
			<DBRefValue Name="Joint Life 1.Death" Id="1"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="108" TypeIdName="name (benefit)">
		<CaseAttributeValue>
			<StringValue Value="Vita"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="94" TypeIdName="smoker Type">
		<CaseAttributeValue>
			<DBRefValue Name="General Benefit" Id="2"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="271" TypeIdName="life basic_form">
		<CaseAttributeValue>
			<DBRefValue Name="Endowment" Id="3"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="11" TypeIdName="benefit-type">
		<CaseAttributeValue>
			<DBRefValue Name="Life" Id="0"/>
		</CaseAttributeValue>
	</CaseAttribute>
</Benefit>
<Payment Id="4" TypeId="0" TypeIdName="Payment of Contribution">
	<CaseAttribute TypeId="354" TypeIdName="annual_premium">
		<CaseAttributeValue>
			<SingleValue UnitName="£/Year" Value="5000" Unit="1"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="15" TypeIdName="single_premium">
		<CaseAttributeValue>
			<SingleValue UnitName="£" Value="1500" Unit="14"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="41" TypeIdName="premium_payment_period">
		<CaseAttributeValue>
			<SingleValue UnitName="Month(s)" Value="10" Unit="5"/>
		</CaseAttributeValue>
	</CaseAttribute>
</Payment>
<EventPayment Id="21" TypeId="1" TypeIdName="Insurance event payment">
	<CaseAttribute TypeId="222" TypeIdName="benefit sum">
		<CaseAttributeValue>
			<SingleValue UnitName="£/Year" Value="0" Unit="1"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="103" TypeIdName="annuity_sum (sum insured)">
		<CaseAttributeValue>
			<SingleValue UnitName="£/Year" Value="10000" Unit="1"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="105" TypeIdName="benefit_payment_period">
		<CaseAttributeValue>
			<SingleValue UnitName="Month(s)" Value="10" Unit="5"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="316" TypeIdName="waiting_period">
		<CaseAttributeValue>
			<SingleValue UnitName="Month(s)" Value="4" Unit="5"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="333" TypeIdName="examination_group">
		<CaseAttributeValue>
			<DBRefValue Name="NO-Limit-group" Id="1001"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="121" TypeIdName="insurance_period">
		<CaseAttributeValue>
			<SingleValue UnitName="Month(s)" Value="10" Unit="5"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="37" TypeIdName="age at entry (examination limits)">
		<CaseAttributeValue>
			<SingleValue UnitName="Year(s)" Value="52" Unit="16"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="292" TypeIdName="age_for_assessment">
		<CaseAttributeValue>
			<SingleValue UnitName="Year(s)" Value="52" Unit="16"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="161" TypeIdName="Eventtype">
		<CaseAttributeValue>
			<DBRefValue Name="Death" Id="2"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="12" TypeIdName="included_loading percent">
		<CaseAttributeValue>
			<SingleValue UnitName="%" Value="0.0" Unit="12"/>
		</CaseAttributeValue>
	</CaseAttribute>
</EventPayment>

pursuits, disorders, occupation

The XML-CaseObjects of type Occupation, Disorder and Pursuit have a similar structure in the XML, and are therefore handled together in this chapter. The main difference is that a person can have max 1 occupation, while they can have any number of disorders and pursuits. Thus pursuits and disorders are lists of elements, while occupation is exactly one of the following elements.

Each element has the following attributes:

attribute name mandatory default value format comment

name

No

 — 

String

Name of the occupation / disorder / pursuit

key

No

 — 

String

Key of the occupation / disorder / pursuit in the rules

locale

No

 — 

String

2 or 4 Byte Locale: e.g. "en" or "nlBE"

deletable

No

true

false/true

sets the attribute deletable of the CaseObject

attributes

No

 — 

see attributes-element. Allows the setting of further attributes of the Benefit- or EventPayment- or Payment-elements.

Special rules that apply to the conversion of occupations, disorders and pursuits

All 3 attributes name, key and locale are optional, but the following applies

  • either key or name must exist.

  • when key and name exist, they must refer to the same element in the rules

  • when there is no key, name and locale must exist

Example: A pursuits list with one pursuit
Request:

"pursuits": [{
     "locale": "en",
     "key": "0250",
     "deletable": false
}]

Created Pursuit-CaseObject

<CaseObject Id="14" TypeId="26" TypeIdName="Pursuit" NotDeletable="true">
	<CaseAttribute TypeId="163" TypeIdName="code (pursuit)">
		<CaseAttributeValue>
			<DBRefValue Name="Cave diving" Key="0250" Locale="en"/>
		</CaseAttributeValue>
	</CaseAttribute>
</CaseObject>

Example: An occupation element
Request:

"occupation": {
     "key": "252103",
     "deletable": true
}

Created Occupation-CaseObject

<CaseObject Id="30" TypeId="12" TypeIdName="Occupation" NotDeletable="false">
	<CaseAttribute TypeId="209" TypeIdName="occupation_code">
		<CaseAttributeValue>
			<DBRefValue Name="Actuary" Key="252103" Locale="en"/>
		</CaseAttributeValue>
	</CaseAttribute>
</CaseObject>

Example: A disorders list with one disorder
Request:

"disorders": [{
     "name": "Diabetes",
     "locale": "en",
     "key": "E14.9-005"
}]

Created Disorder-CaseObject

<CaseObject Id="36" TypeId="8" TypeIdName="Disorder" NotDeletable="true">
	<CaseAttribute TypeId="115" TypeIdName="code (disorder)">
		<CaseAttributeValue>
			<DBRefValue Name="Diabetes" Key="E14.9-005" Locale="en"/>
		</CaseAttributeValue>
	</CaseAttribute>
</CaseObject>

existingCoversInPortfolio

The existingCoversInPortfolio-list refers to the existing covers the person has with the current company.

There is a different behaviour for German or international Compass data. Differences will be marked by the following symbol !.

! Every element of this list will become a Pre-existing Insurance Portfolio-CaseObject with ID 52 in the Case-XML for an international system.
! Every element of this list will become a Vorversicherungen Bestand-CaseObject with ID 14 in the Case-XML for a German system.

Each element has the following attributes:

attribute name mandatory default value format comment

benefitGroup

Yes

 — 

integer

! For an international system the ID of a benefit-group, as defined in the data. Sets the CaseAttribute with ID 770.
! For a German system the ID of an event-type (Ereignistyp), as defined in the data. Sets the CaseAttribute with ID 161.

acceptanceResult

Yes

 — 

integer

ID of an acceptance-result, as defined in the rules. Sets the CaseAttribute with Type-ID 1.

smokerType

No

 — 

integer

ID of a smoker-type as defined in the rules. Will be defined in the CaseAttribute with ID 94
! This field will be ignored for a German system.

benefitSum

No

 — 

attribute-value

Sum to be paid at regular times. Sets two CaseAttributes with IDs 65 and 132. It is a wrapper of an attribute (see attributes) which contains two attributes: value and unit.

sumInsured

No

 — 

integer

Sum insured / lumpsum. Sets two CaseAttributes with IDs 109 and 150.

attributes

No

 — 

see attributes-element. Allows the setting of further attributes of the Pre-existing Insurance Portfolio-elements.

There is a special validation logic regarding the attributes benefitSum and sumInsured: they are mutually exclusive, i.e. exactly one of them is to be provided. The CaseAttributes for the other one will be set to 0.

Example: An existingCoversInPortfolio-list with one element

Details

Request:

"existingCoversInPortfolio": [{
    "benefitGroup": 2,
    "acceptanceResult": 1,
    "smokerType": 2,
    "benefitSum": {
        "value": 1000,
        "unit": 3
    }
}]
...

Created Pre-existing Insurance Portfolio Element

<CaseObject Id="68" TypeId="52" TypeIdName="Pre-existing Insurance Portfolio">
	<CaseAttribute TypeId="94" TypeIdName="smoker Type">
		<CaseAttributeValue>
			<DBRefValue Name="General Benefit" Id="2"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="1" TypeIdName="acceptance_result (Own pre-existing insurances)">
		<CaseAttributeValue>
			<DBRefValue Name="incomplete" Id="1"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="770" TypeIdName="benefit group">
		<CaseAttributeValue>
			<DBRefValue Name="LTC" Id="2"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="150" TypeIdName="sum_assured_f (financial)">
		<CaseAttributeValue>
			<SingleValue UnitName="£" Value="0" Unit="14"/>
		</CaseAttributeValue>
	</CaseAttribute>
    <CaseAttribute TypeId="109" TypeIdName="sum_assured_e (examination Limits)">
		<CaseAttributeValue>
			<SingleValue UnitName="£" Value="0" Unit="14"/>
		</CaseAttributeValue>
	</CaseAttribute>
		<CaseAttribute TypeId="65" TypeIdName="benefit sum financial">
			<CaseAttributeValue>
				<SingleValue UnitName="£/Month" Value="1000" Unit="3"/>
			</CaseAttributeValue>
		</CaseAttribute>
		<CaseAttribute TypeId="132" TypeIdName="benefit sum examination limits">
			<CaseAttributeValue>
				<SingleValue UnitName="£/Month" Value="1000" Unit="3"/>
			</CaseAttributeValue>
		</CaseAttribute>
</CaseObject>

attributes

Via attributes it is possible to set values for additional CaseAttributes of the current object.
attributes is a map of (key,value)-pairs, where the key is the ID of the CaseAttribute, and the value is a structure that allows to define a value for the CaseAttribute. For each CaseAttribute to be set attributes will contain one element.

Each of these elements has the following attributes:

attribute name mandatory format comment

id

No

integer

ID of a database entry

value

No

String

value which will be converted depending on the type of CaseAttribute (date, numeric value, text)

unit

No

integer

ID of a unit, as defined in the rules. Only to be used when the CaseAttribute allows numeric values.

Example: Sets the occupational status (TypeID 127) and the income (TypeID 135) for an occupation

Details

Request:

...
"occupation": {
     "key": "252103",
     "deletable": true,
     "attributes": {
        "127": {
            "id": 11
        },
        "135": {
            "value": 45000,
            "unit": 1
        }
     }
},
...

Created Occupation Element with provided attributes

<CaseObject Id="30" TypeId="12" TypeIdName="Occupation" NotDeletable="false">
	<CaseAttribute TypeId="209" TypeIdName="occupation_code">
		<CaseAttributeValue>
			<DBRefValue Name="Actuary" Key="252103" Locale="en"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="135" TypeIdName="annual income current year">
		<CaseAttributeValue>
			<SingleValue UnitName="£/Year" Value="45000" Unit="1"/>
		</CaseAttributeValue>
	</CaseAttribute>
	<CaseAttribute TypeId="127" TypeIdName="occupational_status">
		<CaseAttributeValue>
			<DBRefValue Name="Employee" Id="11"/>
		</CaseAttributeValue>
	</CaseAttribute>
</CaseObject>

Not all CaseAttributes can be set via this mechanism: it is restricted to CaseAttributes whose data type allows

  • StringValues (text)

  • SingleValues (numerical values)

  • DBRefValues (reference to a database entry in the rules)

  • DateValues (a date)

For these different value types, different sets of attributes are required. The possible attribute sets are;

For a SingleValue:
  • value (mandatory and numerical)

  • unit (optional)

For a DBRefValue:
  • id (mandatory)

For a StringValue or a DateValue:
  • value (mandatory; see below for restrictions to DateValues)

DateValues

Some CaseAttributes expect a date. The date can miss the day, or it can miss month and day. So the allowed formats are:

  • Years (YYYY)

  • Years and Months (YYYY.MM)

  • Years, Months and Days (YYYY.MM.DD)

Be aware that the delimiter has to be a dot (".").

Example: Setting a date (day, month, year) for a disorder
Request:

"disorders": [
    {
        "name": "Asthma",
        "locale": "en",
        "key": "J45.9-001",
        "deletable": false,
        "attributes": {
            "100001905":{
                "value":"2018.07.30"
            }
        }
    }
]

Created Disorder-CaseObject with the provided DateValue

 <CaseObject Id="81" TypeId="8" TypeIdName="Disorder" NotDeletable="true">
     <CaseAttribute TypeId="115" TypeIdName="code (disorder)">
         <CaseAttributeValue>
             <DBRefValue Name="Asthma" Key="J45.9-001" Locale="en"/>
         </CaseAttributeValue>
     </CaseAttribute>
     <CaseAttribute TypeId="100001905" TypeIdName="Mental medication therapy - start">
         <CaseAttributeValue>
             <DateValue Year="2018" Month="07" Day="30"/>
         </CaseAttributeValue>
     </CaseAttribute>
 </CaseObject>

Example: Setting a year for a disorder
Request:

"disorders": [
     {
         "name": "Asthma",
         "locale": "en",
         "key": "J45.9-001",
         "deletable": false,
         "attributes": {
             "100001905":{
                 "value":"2018"
             }
         }
     }
]

Created Disorder-CaseObject with the year only

<CaseObject Id="44" TypeId="8" TypeIdName="Disorder" NotDeletable="true">
    <CaseAttribute TypeId="115" TypeIdName="code (disorder)">
        <CaseAttributeValue>
            <DBRefValue Name="Asthma" Key="J45.9-001" Locale="en"/>
        </CaseAttributeValue>
    </CaseAttribute>
    <CaseAttribute TypeId="100001905" TypeIdName="Mental medication therapy - start">
        <CaseAttributeValue>
            <DateValue Year="2018"/>
        </CaseAttributeValue>
    </CaseAttribute>
</CaseObject>

Output Fields

When the HTTP status code is 200, the service returns a CompassResponse [1] element. Other HTTP status codes are not described here (typically syntactically incorrect JSON body, or missing or misspelled input parameters). Upon sending an error-free request to the interface, an XML CaseData is created based on the data provided in the request and is persisted into the target database successfully. The response element returned by the interface has the following attributes.

Table 5. Output Parameters - structure of CompassResponse

path

path of the invoked service[2], it will be /[servicename]/createCaseInDB

status / statusText

a integer-text pair with the following 2 value-pairs:
0 - OK: no errors occurred
3 - FATAL ERROR: an error occurred

errorDescriptions

A list of errors. Each error contains an error code and the corresponding error message describing the error occurred during the process. When no errors occurred an empty list is returned.

jsonContent

contains the json formatted content of the response, will always be null

byteContent

contains the byte-formatted content of the response, will always be null

textContent

contains the textual content of the response, will always be null

Example

Empty persons list. This leads to an error
Request:

{
    "cspSetId": "1",
    "pos": true,
    "caseId": "Test0001",
    "locale": "en",
    "complete": false,
    "techSource": {
        "sourceTypeId": 100,
        "complete": true
    },
    "application": {
        "ownPortfolioAvailable": true,
        "persons": [

        ]
    }
}

Response:
HTTP-Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 542,
            "errorMessage": "The persons list has to contain at least one element."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

Error handling

Typical Error Scenarios

In the following section typical errors and the cause for the errors are listed. Each possible error scenario is provided with an example input JSON data along with the corresponding response, which contains the corresponding errorCode(s) and errorMessage(s).

View Error Scenarios in Detail

Standard Elements

Non matching CaseIDs

The caseId’s which are found on the HTTP Request and in JSON must match with each other, otherwise an error occurs. The CreateCaseInDB Service has a built in validation logic which checks to see whether these caseIds match with each other. This must be taken into account when creating a request, otherwise it becomes semantically ambiguous which case is to be processed.

Example: An invalid input JSON with non matching CaseId
Request:

http://localhost:8086/CompassService/createCaseInDB?caseId=Test0002&subId=TEST
{
    "cspSetId": "1",
    "pos": true,
    "caseId": "Test0001",
    "locale": "en",
    "complete": false,
    "techSource": {
        "sourceTypeId": 100,
        "complete": true
    }
    ...
}

Response:
Status: 200 OK

{
    "path": "/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 570,
            "errorMessage": "InvalidArgumentException: The provided caseIds in URL: Test0002 and in input JSON: Test0001 are not identical. Please provide identical caseIds both in URL and in input JSON."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
CaseId not provided

In the following example, caseId was not provided in the input data.

Example: An invalid input JSON with no caseId
Request:

{
    "cspSetId": "1",
    "pos": true,
    "locale": "en",
    "complete": true,
    "techSource": {
        "sourceTypeId": 100,
        "complete": true
    },
    "application": {
        "ownPortfolioAvailable": true,
        ...
    }
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 531,
            "errorMessage": "Empty or no caseId provided. Please provide a caseId."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
No techSource provided

If no techSource is provided, then an error will occur.

Example: An invalid input JSON with no techSource
Request:

{
    "cspSetId": "1",
    "pos": true,
    "caseId": "Test001",
    "locale": "en",
    "complete": false,
    "techSource": {

    },
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 537,
            "errorMessage": "No techSource provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

Another possible scenario is related to the attributes of the techSource. techSource consists of two attributes: sourceTypeId (type Integer) and complete (type Boolean). sourceTypeId is required and it must be provided, otherwise this techSource will be considered as empty and an error will occur, however complete is optional and has a default value false.

Example: An invalid input JSON with an invalid techSource with no sourceTypeId
Request:

{
    "cspSetId": "1",
    "pos": true,
    "caseId": "Test001",
    "locale": "en",
    "complete": false,
    "techSource": {
        "complete": true
    },
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 537,
            "errorMessage": "No techSource provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid cspSetId provided

The cspSetId will be checked to see if it is related to a CSPSet from the database. If the provided value is not valid and thus does not return a valid CSPSet object from the database, then an error will occur.

Example: An invalid input JSON with an invalid cspSetId
Request:

{
    "cspSetId": "105",
    "caseId": "Test001",
    "locale": "en",
    "techSource": {
        "sourceTypeId": 100,
        "complete": true
    },
    ...
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 540,
            "errorMessage": "Invalid cspSetId provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Unrecognized field provided

It is important to note that the key-value pairs provided in the JSON data are mapped to data transfer objects at runtime. As these data transfer objects have the attribute names identical to the keys in the JSON data, a bad request will occur if an unknown attribute is provided, since this webservice fails to map this attribute to an existing transfer object’s attribute.

In this example, the attribute blabber is an unknown attribute and it will lead to a bad request. An error warning won’t be provided, however a 400 Bad Request will be returned and the thrown error will be logged. The logged error can be found in the CompassService.log file.

Example: An invalid input JSON with an invalid key-value pair
Request:

{
    "occupation": {
        "key": "252103",
        "deletable": false,
        "blabber": "blabla",
        "attributes": {
            "127": {
                "id": 11
            },
            "135": {
                "value": 45000,
                "unit": 1
            }
        }
    }
}

Response:
Status: 400 Bad Request

[DEBUG] o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver:145 -

Resolved

[org.springframework.http.converter.HttpMessageNotReadableException: I/O error while reading input message; nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException:

Unrecognized field "blabber"
(class com.cr.compass.rest.dto.service.casejson.OccupationDto), not marked as ignorable (5 known properties: "locale", "name", "deletable", "attributes", "key"])

Persons

Required attribute missing for persons

There is a general rule of thumb applied to every section here. There are two types of attributes; required attributes and optional attributes. If one of the required attributes is missing, then an error will occur, however the optional ones can be omitted and no errors will occur and also no CaseAttributes will be generated for them in the output XML file. It is also important to note that the provided values for attributes, including the optional ones, will be checked to see if they are logical.

In the following request example, name is missing. Since name is one of the required attributes, an error occurred.

Example: An invalid persons element without a required attribute
Request:

{
      "id": "123",
      "ap": true,
      "ph": false,
      "age": 52,
      "gender": 2,
      "maritalStatus": 2,
      "residenceCountry": "D",
      "nationality": "D",
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 512,
            "errorMessage": "Invalid or missing value for attribute(s): name. Please check your input data. Person Name: null, ID: 123."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid attribute value provided for persons

If an invalid value is provided for an attribute, an error occurs. In this example, the value of DXB is provided as the residenceCountry and this values matches with none of the available country codes worldwide, thus an error will occur.

Example: An invalid persons element with an invalid attribute value
Request:

{
     "id": "123",
     "name": "Klaus Mustermann",
     "ap": true,
     "ph": false,
     "age": 35,
     "gender": 2,
     "maritalStatus": 2,
     "residenceCountry": "DXB",
     "nationality": "D"
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 512,
            "errorMessage": "Invalid or missing value for attribute(s): residenceCountry. Person Name: Klaus Mustermann, ID: 123. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

In the following example, the provided value for maritalStatus, 23, does not return a sensible value from the corresponding database and thus it leads to an error.

Example: An invalid persons element with an invalid attribute value
Request:

{
     "id": "123",
     "name": "Klaus Mustermann",
     "ap": true,
     "ph": false,
     "age": 35,
     "gender": 2,
     "maritalStatus": 23,
     "residenceCountry": "D",
     "nationality": "D"
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 512,
            "errorMessage": "Invalid or missing value for attribute(s): maritalStatus. Person Name: Klaus Mustermann, ID: 123. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Out of range value provided for persons

The service checks if the provided values for some of the attributes are within the logical ranges, this not only applies to the Persons but also to the other elements as well. For example the attribute age is checked to see if it fulfills this logical criteria. In the following example Klaus Mustermann has an age of 160, in this case an error will be thrown.

Example: An invalid persons element with an invalid value that is out of range
Request:

"persons": [{
       "id": "123",
       "name": "Klaus Mustermann",
       "ap": true,
       "ph": false,
       "age": 160,
       "gender": 2,
       "maritalStatus": 5,
       "nationality": "D",
       "residenceCountry": "E",
        ...
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 543,
            "errorMessage": "The provided value for the attribute is out of the valid range. Attribute: age. Person Name: Klaus Mustermann, ID: 123, given value: 160. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Empty person provided

If an empty person is provided, then an error will occur.

Example: An invalid request with an empty persons list
Request:

{
    "cspSetId": "1",
    "pos": true,
    "caseId": "Test001",
    "locale": "en",
    "complete": false,
    "techSource": {
        "sourceTypeId": 100,
        "complete": true
    },
    "application": {
        "ownPortfolioAvailable": true,
        "persons": [
            { }
...
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 530,
            "errorMessage": "Input contains empty person(s). Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
No Assured Person No Policy Holder provided

If a provided person is neither an assured person or a policy holder, then an error will occur.

Example: An invalid persons element with no assured person and/or policy holder
Request:

{
       "id": "123",
       "name": "Klaus Mustermann",
       "ap": false,
       "ph": false,
       "age": 35,
       "gender": 2,
        ...
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 516,
            "errorMessage": "The person: Klaus Mustermann is invalid. The person must be either at least Assured Person or Policy Holder or both in order to be added to the CaseData XML Interface."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
No Assured Persons provided

At least one of the provided persons in the input JSON data, must be an Assured Person otherwise an error will occur.

Example: An invalid request with no assured persons
Request:

"persons": [{
    "id": "123",
    "name": "Klaus Mustermann",
    "ap": false,
    "ph": true,
...
            {
    "id": "456",
    "name": "Eddy Mustermann",
    "ap": false,
    "ph": true,
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 523,
            "errorMessage": "The provided persons are invalid. There must be at least one Assured Person in the input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

RequestedBenefits

Missing requestedBenefits

If the requestedBenefits are missing, an error will occur.

Example: An invalid request with no requestedBenefits elements
Request:

...
"requestedBenefits": [

],
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 518,
            "errorMessage": "The element: requestedBenefits for Person: Klaus Mustermann is missing in the provided JSON for the person. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Incompatible benefitType provided

The benefitType determines whether the attributes singleLife and lifeBasicForm must be existing in the requestedBenefits. If an incompatible benefit type is provided and one or both of the mentioned attributes do not exist in requestedBenefits, then an error will occur.

Example: An invalid requestedBenefits element with invalid benefitType
Request:

"requestedBenefits": [
    {
       "benefitType": 0,
       "smokerType": 2,
       "benefitName": "Klaus Benefits",
       "singleLife": "false",
       "premiumPaymentYears": 10,
       "premiumPaymentAnnual": 5000,
       "singlePremium": 0,
       "insurancePeriodYears": 10,
       "sumInsured": 1000,
       "limitGroup": 1001,
       "disabilityPaymentYears": 10,
       "disabilityWaitingPeriodWeeks": 4,
    }
],
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 512,
            "errorMessage": "Inconsistent JSON Structure. For the provided benefitType: 0, both attributes singleLife and lifeBasicForm must be existing in the requestedBenefits: Klaus Benefits."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Empty requestedBenefit provided

If an empty requestedBenefits is provided in the JSON data, then an error will occur.

Example: An invalid request with an empty requestedBenefit
Request:

...
     "requestedBenefits": [
         {   },
         {
             "benefitType": 0,
             "smokerType": 2,
             "benefitName": "Klaus Benefits",
             "singleLife": "true",
             "lifeBasicForm": 3,
             "premiumPaymentYears": 10,
             "premiumPaymentAnnual": 5000,
             "singlePremium": 0,
             "insurancePeriodYears": 10,
             "sumInsured": 0,
             "limitGroup": 1001,
             "disabilityPaymentYears": 10,
             "disabilityWaitingPeriodWeeks": 4,
             "attributes": {
                 "12": {
                     "value": "0.0",
                     "unit": 12
                 },
                 "77": {
                     "value": "0.0",
                     "unit": 9
                 }
             }
         }
     ]
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 532,
            "errorMessage": "Empty RequestedBenefit provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Required attribute missing for requestedBenefits

If a required attribute is missing, an error will occur.

Example: An invalid requestedBenefits element without a required attribute
Request:

"requestedBenefits": [{
      "benefitType": 0,
      "smokerType": 2,
      "singleLife": false,
      "lifeBasicForm": 3,
      "premiumPaymentYears": 10,
      "premiumPaymentAnnual": 5000,
      "singlePremium": 1500,
      "insurancePeriodYears": 10,
      "sumInsured": 10000,
      "limitGroup": 1001,
      "disabilityPaymentYears": 10,
      "disabilityWaitingPeriodWeeks": 4,
      "attributes": {
         "12": {
             "value": "0.0",
             "unit": 12
         },
         "77": {
             "value": "0.0",
             "unit": 9
         }
      }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 512,
            "errorMessage": "Invalid or missing value for attribute(s): benefitName. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid attribute value provided for requestedBenefits

If an invalid value was provided for an attribute, an error will occur.

Example: An invalid requestedBenefits element with an invalid attribute value
Request:

"requestedBenefits": [{
      "benefitType": 0,
      "smokerType": -23,
      "benefitName": 1,
      "singleLife": false,
      "lifeBasicForm": 3,
      "premiumPaymentYears": 10,
      "premiumPaymentAnnual": 5000,
      "singlePremium": 1500,
      "insurancePeriodYears": 10,
      "sumInsured": 10000,
      "limitGroup": 1001,
      "disabilityPaymentYears": 10,
      "disabilityWaitingPeriodWeeks": 4,
      "attributes": {
         "12": {
             "value": "0.0",
             "unit": 12
         },
         "77": {
             "value": "0.0",
             "unit": 9
         }
      }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 541,
            "errorMessage": "Negative values are not allowed for the provided attribute: smokerType. Provided value: -23. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
No benefitSum and sumInsured provided for requestedBenefits

In the following example, neither benefitSum, nor sumInsured was provided.

Example: An invalid requestedBenefits element with neither benefitSum, nor sumInsured
Request:

"requestedBenefits": [{
      "benefitType": 0,
      "smokerType": 2,
      "benefitName": "Klaus Benefits",
      "singleLife": false,
      "lifeBasicForm": 3,
      "premiumPaymentYears": 10,
      "premiumPaymentAnnual": 5000,
      "singlePremium": 1500,
      "insurancePeriodYears": 10,
      "limitGroup": 1001,
      "disabilityPaymentYears": 10,
      "disabilityWaitingPeriodWeeks": 4,
      "attributes": {
         "12": {
           "value": "0.0",
           "unit": 12
          },
         "77": {
           "value": "0.0",
           "unit": 9
          }
      }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 514,
            "errorMessage": "Either an invalid value or no values provided for one of these variables: benefitSum, sumInsured. A valid value for one of these attributes must be provided at Klaus Benefits."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Both benefitSum and sumInsured provided for requestedBenefits

In the following example, both sumInsured and benefitSum are provided.

Example: An invalid requestedBenefits element with both benefitSum and sumInsured
Request:

"requestedBenefits": [{
     "benefitType": 0,
     "smokerType": 2,
     "benefitName": "Klaus Benefits",
     "singleLife": false,
     "sumInsured": 10000,
     "benefitSum": {
           "value": 1500,
           "unit": 1
     },
     "lifeBasicForm": 3,
     "premiumPaymentYears": 10,
     "premiumPaymentAnnual": 5000,
     "singlePremium": 1500,
     "insurancePeriodYears": 10,
     "limitGroup": 1001,
     "disabilityPaymentYears": 10,
     "disabilityWaitingPeriodWeeks": 4,
     "attributes": {
        "12": {
           "value": "0.0",
           "unit": 12
        },
        "77": {
           "value": "0.0",
           "unit": 9
        }
     }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 515,
            "errorMessage": "Inconsistent JSON Structure. The attributes: benefitSum, sumInsured can not both exist at the same time at Klaus Benefits. Only one of them should be provided."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
sumInsured provided instead of benefitSum for requestedBenefits

In the following example, the sumInsured should have been provided instead of the benefitSum.

In addition to the rules above, when benefitSum is provided instead of the sumInsured, value and unit must be provided otherwise an error will occur. Unit is of type currency per time unit (i.e. £/Day or $/Month).

Example: An invalid requestedBenefits element with wrong benefitType
Request:

"requestedBenefits": [{
     "benefitType": 0,
     "smokerType": 2,
     "benefitName": "Klaus Benefits",
     "singleLife": false,
     "benefitSum": {
           "value": 1500,
           "unit": 1
     },
     "lifeBasicForm": 3,
     "premiumPaymentYears": 10,
     "premiumPaymentAnnual": 5000,
     "singlePremium": 1500,
     "insurancePeriodYears": 10,
     "limitGroup": 1001,
     "disabilityPaymentYears": 10,
     "disabilityWaitingPeriodWeeks": 4,
     "attributes": {
        "12": {
          "value": "0.0",
          "unit": 12
        },
        "77": {
          "value": "0.0",
          "unit": 9
        }
      }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 513,
            "errorMessage": "Inconsistent JSON Structure. The attribute: benefitSum needs to be replaced with sumInsured at Benefit: Klaus Benefits."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Value not provided for benefitSum

if value is not provided for benefitSum, it will be considered as empty and an error will occur.

Example: An invalid requestedBenefits element with an empty benefitSum
Request:

"requestedBenefits": [{
    "benefitType": 14,
    "smokerType": 2,
    "benefitName": "Klaus Benefits",
    "singleLife": "true",
    "lifeBasicForm": 3,
    "premiumPaymentYears": 10,
    "premiumPaymentAnnual": 5000,
    "singlePremium": 3,
    "insurancePeriodYears": 10,
    "benefitSum": {
        "unit": 1
    },
    "limitGroup": 1001,
    "disabilityPaymentYears": 10,
    "disabilityWaitingPeriodWeeks": 12,
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 514,
            "errorMessage": "Either an invalid value or no values provided for one of these variables: benefitSum, sumInsured. A valid value for one of these attributes must be provided at Klaus Benefits."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Negative value provided for benefitSum

If negative value(s) is provided for value or unit for a benefitSum, then an error will occur.

Example: An invalid benefitSum with a negative value
Request:

"requestedBenefits": [{
        "benefitType": 14,
        "benefitName": "Eddy Benefits",
        "singleLife": "true",
        "lifeBasicForm": 3,
        "premiumPaymentYears": 5,
        "premiumPaymentAnnual": 2500,
        "singlePremium": 0,
        "insurancePeriodYears": 5,
        "limitGroup": 1002,
        "benefitSum": {
            "unit": 3,
            "value": -1000
        },
        "disabilityPaymentYears": 10,
        "disabilityWaitingPeriodWeeks": 7
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 541,
            "errorMessage": "Negative values are not allowed for the provided attribute: benefitSum. Provided value: -1000. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Negative unit provided for benefitSum

Example: An invalid benefitSum with an invalid, negative unit
Request:

"requestedBenefits": [{
        "benefitType": 14,
        "benefitName": "Eddy Benefits",
        "singleLife": "true",
        "lifeBasicForm": 3,
        "premiumPaymentYears": 5,
        "premiumPaymentAnnual": 2500,
        "singlePremium": 0,
        "insurancePeriodYears": 5,
        "limitGroup": 1002,
        "benefitSum": {
            "unit": -10,
            "value": 1000
        },
        "disabilityPaymentYears": 10,
        "disabilityWaitingPeriodWeeks": 7
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 541,
            "errorMessage": "Negative values are not allowed for the provided attribute: benefitSum. Provided value: -10. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Out of range value provided for benefitSum

In addition to the rule above, if a provided value for a benefitSum is out of range, then an error will occur.

Example: An invalid benefitSum with an out of range value
Request:

"requestedBenefits": [{
        "benefitType": 14,
        "benefitName": "Eddy Benefits",
        "singleLife": "true",
        "lifeBasicForm": 3,
        "premiumPaymentYears": 5,
        "premiumPaymentAnnual": 2500,
        "singlePremium": 0,
        "insurancePeriodYears": 5,
        "limitGroup": 1002,
        "benefitSum": {
            "unit": 3,
            "value": 1000000000
        },
        "disabilityPaymentYears": 10,
        "disabilityWaitingPeriodWeeks": 7
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 543,
            "errorMessage": "The provided value for the attribute is out of the valid range. Attribute: benefitSum, given value: 1000000000. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid unit provided for benefitSum

The provided unit for a benefitSum must be of currency per time unit, otherwise an error will occur.[3]

Example: An invalid benefitSum element with an invalid unit
Request:

"requestedBenefits": [
    {
        "benefitType": 14,
        "benefitName": "Eddy Benefits",
        "singleLife": "true",
        "lifeBasicForm": 3,
        "premiumPaymentYears": 5,
        "premiumPaymentAnnual": 2500,
        "singlePremium": 0,
        "insurancePeriodYears": 5,
        "limitGroup": 1002,
        "benefitSum": {
            "unit": 4,
            "value": 1000
        },
        "disabilityPaymentYears": 10,
        "disabilityWaitingPeriodWeeks": 7
    }
]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 517,
            "errorMessage": "The unit is not found for the attribute(s): benefitSum. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Id provided for benefitSum for requestedBenefits

If an id is provided for a benefitSum, an error will occur. As mentioned above, only unit(s) and value(s) must be provided for the benefitSum(s).[4]

Example: An invalid benefitSum that contains an id
Request:

"requestedBenefits": [{
        "benefitType": 14,
        "smokerType": 2,
        "benefitName": "Eddy Benefits",
        "singleLife": "true",
        "lifeBasicForm": 3,
        "premiumPaymentYears": 5,
        "premiumPaymentAnnual": 2500,
        "singlePremium": 0,
        "insurancePeriodYears": 5,
        "limitGroup": 1002,
        "benefitSum": {
            "id": 12500,
            "unit": 3,
            "value": 100
        },
        "disabilityPaymentYears": 10,
        "disabilityWaitingPeriodWeeks": 7
    }
]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 551,
            "errorMessage": "Id: 12500 was provided for benefitSum at requestedBenefits: Eddy Benefits. Only unit and value must be provided for benefitSum(s)."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

Occupation

This section contains the possible errors regarding the Occupation.

Locale not provided

If key is not provided in the input data, then name and locale must be both provided in the input data, otherwise an error will occur.

Example: An invalid occupation without a locale
Request:

"occupation": {
    "name": "Clock maker"
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 546,
            "errorMessage": "locale is missing at occupation. Both name (=Clock maker) and locale are required when no key is provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Empty Occupation provided

If an empty occupation is provided, then an error will occur.

Example: An invalid request with an empty occupation
Request:

"application": {
    "ownPortfolioAvailable": true,
    "persons": [
        {
            "id": "123",
            "name": "Klaus Künzel",
            "ap": true,
            "ph": false,
            "age": 52,
            "gender": 2,
            "maritalStatus": 2,
            "residenceCountry": "D",
            "nationality": "D",
            "occupation": {

            },
            "existingCoversInPortfolio": [{
              ...
            }]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 534,
            "errorMessage": "Empty Occupation provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
No Key No Name-Locale provided for Occupation

In the following example, neither a key nor a name was provided in the occupation, thus an error will occur. An occupation with no keys and names will be considered as empty.

Example: An empty occupation
Request:

...
"occupation": {
    "deletable": false
}
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 534,
            "errorMessage": "Empty occupation provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid Occupation with an incompatible Key-Name pair

When an incompatible key and name pair is provided, then an error will occur. The provided key for the occupation does not match with the returned value, therefore either the name or the key must be changed to obtain a match and solve the error.

Example: An invalid occupation with an incompatible key-name pair+ Request:

"occupation": {
     "name": "Software developer",
     "key": "252103"
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 520,
            "errorMessage": "Incompatible key and name pair were provided at occupation. Key: 252103, Name: Software developer. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid Occupation with an unspecified locale

When a locale does not return a defined name from the database for a specific occupation with key-name pair, then an error will occur.

Example: An invalid occupation with an unspecified locale
Request:

"occupation": {
    "key": "252103",
    "locale": "fr",
    "name": "Actuary",
    "deletable": false
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 553,
            "errorMessage": "InvalidArgumentException: Either an invalid key: 252103 or an invalid locale: fr provided at occupation. Please provide a valid key-locale pair."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid Key provided for Occupation

When a provided key does not return a defined name from the database for a specific Occupation with key-name pair, then an error will occur.

Example: An invalid Occupation with an unspecified key
Request:

"occupation": {
    "key": "252103s",
    "name": "Actuary",
    "deletable": false
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 552,
            "errorMessage": "InvalidArgumentException: No occupation found for the provided key: 252103s. Please provide a valid key."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

Pursuit

Locale not provided for Pursuit

In addition to the rule above, if key is not provided in the input data, then name and locale must be both provided in the input data, otherwise an error will occur.

Example: An invalid pursuits element without a locale
Request:

"pursuits": [{
        "name": "Cave diving",
        "deletable": false
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 546,
            "errorMessage": "locale is missing at pursuit. Both name (=Cave diving) and locale are required when no key is provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Empty Pursuit provided

If an empty pursuit is provided, then an error will occur.

Example: An invalid request with an empty pursuit
Request:

...
    "pursuits": [
        {

        },
        {
            "name": "Catamaran racing",
            "locale": "en",
            "key": "0239",
            "deletable": false
        }
    ],
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 536,
            "errorMessage": "Empty Pursuit provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
No Key No Locale provided for Pursuit

In the following example, neither a key nor a name - locale pair was provided in the pursuit element, in this case the pursuit will be considered as empty.

Example: An empty pursuit
Request:

"pursuits": [{
    "deletable": false
      …
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 536,
            "errorMessage": "Empty pursuit provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid Pursuit with an incompatible key-name pair

When an incompatible key-name pair is provided, then an error will occur. Either name or key must be changed here to solve the problem.

Example: An invalid pursuit with an incompatible key-name pair
Request:

"pursuits": [{
      "name": "Bungee jumping",
      "locale": "en",
      "key": "0250",
      "deletable": false
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 520,
            "errorMessage": "Incompatible key and name pair were provided at pursuit. Key: 0250, Name: Bungee jumping. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid Pursuit with an unspecified locale

When a locale does not return a defined name from the database for a specific pursuit with key-name pair, then an error will occur.

Example: An invalid pursuit with an unspecified locale
Request:

"pursuits": [{
    "name": "chess",
    "key": "0006",
    "locale": "fr",
    "deletable": true
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 553,
            "errorMessage": "InvalidArgumentException: Either an invalid key: 0006 or an invalid locale: fr provided at pursuit. Please provide a valid key-locale pair."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid Key provided for Pursuit

When a provided key does not return a defined name from the database for a specific pursuit with key-name pair, then an error will occur.

Example: An invalid pursuit with an unspecified key
Request:

"pursuits": [{
    "name": "chess",
    "key": "0006s",
    "deletable": true
}],

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 552,
            "errorMessage": "InvalidArgumentException: No pursuit found for the provided key: 0006s. Please provide a valid key."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

Disorder

Locale not provided for Disorder

If key is not provided in the input data, then name and locale must be both provided in the input data, otherwise an error will occur.

Example: An invalid disorder without a locale
Request:

"disorders": [{
   "name": "Diabetes"
}

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 546,
            "errorMessage": "locale is missing at disorder. Both name (=Diabetes) and locale are required when no key is provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Empty Disorder provided

If an empty disorder is provided in the JSON data, then an error will occur.

Example: An invalid request with an empty disorder
Request:

...
    "disorders": [
        {

        },
        {
            "name": "abnormal EEG",
            "locale": "en",
            "key": "R94.0-002"
        }
    ],
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 535,
            "errorMessage": "Empty Disorder provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
No Key No Locale Provided for Disorder

In the following example, neither a key nor a name - locale pair was provided in the disorder element, thus this disorder will be considered as empty and an error will occur.

Example: An empty disorder without a key-name pair
Request:

"disorders": [{
  "deletable": false
 }]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 535,
            "errorMessage": "Empty disorder provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid Disorder with an incompatible key-name Pair

When an incompatible key and name pair is provided, then an error will occur. The given key R94.0-002 is for the disorder abnormal EEG.[5] .

Example: An invalid disorder with an incompatible key-name pair
Request:

"disorders": [{
     "name": "Diabetes",
     "locale": "en",
     "key": "R94.0-002"
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 520,
            "errorMessage": "Incompatible key and name pair were provided at disorder. Key: R94.0-002, Name: Diabetes. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid Disorder with an unspecified locale

When a locale does not return a defined name from the database for a specific disorder with key-name pair, then an error will occur.

Example: An invalid disorder with an unspecified locale
Request:

"disorders": [{
    "name": "Asthma",
    "locale": "fr",
    "key": "J45.9-001",
    "deletable": false
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 553,
            "errorMessage": "InvalidArgumentException: Either an invalid key: J45.9-001 or an invalid locale: fr provided at disorder. Please provide a valid key-locale pair."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid Key provided for Disorder

When a provided key does not return a defined name from the database for a specific disorder with key-name pair, then an error will occur.

Example: An invalid disorder with an unspecified key
Request:

"disorders": [{
    "name": "Asthma",
    "key": "J45.9-001",
    "deletable": false
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 552,
            "errorMessage": "InvalidArgumentException: No disorder found for the provided key: J45.9s-001. Please provide a valid key."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

existingCoversInPortfolio

Empty existingCoversInPortfolio provided

If an empty CoverinPortfolio is provided, then an error will occur.

Example: An empty existingCoversInPortfolio
Request:

...
"existingCoversInPortfolio": [{

}]
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 533,
            "errorMessage": "Empty CoverInPortfolio provided. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Required attribute missing for existingCoversInPortfolio

If one of the required attributes is missing in the provided JSON, then an error will occur.

Example: An invalid existingCoversInPortfolio without a required attribute
Request:

"existingCoversInPortfolio": [{
    "acceptanceResult": 1,
    "smokerType": 2,
    "sumInsured": 3000
}]
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 512,
            "errorMessage": "Invalid or missing value for attribute(s): benefitGroup. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
No benefitSum and no sumInsured provided for existingCoversInPortfolio

When neither benefitSum, nor sumInsured is provided, an error will occur.

Example: An invalid existingCoversInPortfolio with neither benefitSum nor sumInsured
Request:

"existingCoversInPortfolio": [{
     "benefitGroup": 1,
     "acceptanceResult": 1,
     "smokerType": 2
}],

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 514,
            "errorMessage": "Either an invalid value or no values provided for one of these variables: benefitSum, sumInsured. A valid value for one of these attributes must be provided at one of the existingCoversInPortfolio."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Both benefitSum and sumInsured provided for existingCoversInPortfolio

When both benefitSum and sumInsured are both provided, then an error will occur.

Example: An invalid existingCoversInPortfolio with both benefitSum and sumInsured
Request:

"existingCoversInPortfolio": [{
    "benefitGroup": 1,
    "acceptanceResult": 1,
    "smokerType": 2,
    "sumInsured": 5000,
    "benefitSum": {
        "unit": 1,
        "value": "2000"
    }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 515,
            "errorMessage": "Inconsistent JSON Structure. The attributes: benefitSum, sumInsured can not both exist at the same time at one of the existingCoversInPortfolio. Only one of them should be provided."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid attribute value provided for existingCoversInPortfolio

When an invalid value is provided for an attribute, an error will occur.

Example: An invalid existingCoversInPortfolio with a negative sumInsured
Request:

"existingCoversInPortfolio": [{
    "benefitGroup": 2,
    "acceptanceResult": 1,
    "smokerType": 2,
    "sumInsured": -3000
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 541,
            "errorMessage": "Negative values are not allowed for the provided attribute: sumInsured. Provided value: -3000. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Value not provided for benefitSum for existingCoversInPortfolio

In addition to the previously mentioned rules, when benefitSum is provided instead of the sumInsured, then both unit and value must be provided, otherwise an error will occur. Unit must be of type currency per time unit (i.e. £/Day or $/Month).

Example: An invalid existingCoversInPortfolio with an invalid benefitSum
Request:

"existingCoversInPortfolio": [{
    "benefitGroup": 1,
    "acceptanceResult": 1,
    "smokerType": 2,
    "benefitSum": {
        "unit": 29
    }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [{
        "errorCode": 514,
        "errorMessage": "Either an invalid value or no values provided for one of these variables: benefitSum, sumInsured. A valid value for one of these attributes must be provided at one of the existingCoversInPortfolio."
    }],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
No Unit provided for benefitSum for existingCoversInPortfolio

If no unit is provided for benefitSum, then an error will occur.

Example: An invalid existingCoversInPortfolio with an invalid benefitSum with no unit
Request:

"existingCoversInPortfolio": [{
    "benefitGroup": 1,
    "acceptanceResult": 1,
    "smokerType": 2,
    "benefitSum": {
        "value": 1000
    }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 517,
            "errorMessage": "The unit is not found for the attribute(s): benefitSum. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Negative value provided for benefitSum for existingCoversInPortfolio

If a negative value is provided for value or unit for benefitSum or for the sumInsured, then an error will occur.

Example: An invalid benefitSum with a negative value
Request:

"existingCoversInPortfolio": [{
    "benefitGroup": 1,
    "acceptanceResult": 1,
    "smokerType": 2,
    "benefitSum": {
        "value": "-2000",
        "unit": 10
    }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 541,
            "errorMessage": "Negative values are not allowed for the provided attribute: benefitSum. Provided value: -2000. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Negative unit provided for benefitSum for existingCoversInPortfolio

Example: An invalid benefitSum with a negative unit
Request:

"existingCoversInPortfolio": [{
    "benefitGroup": 1,
    "acceptanceResult": 1,
    "smokerType": 2,
    "benefitSum": {
        "value": 1000,
        "unit": -3
    }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 541,
            "errorMessage": "Negative values are not allowed for the provided attribute: benefitSum. Provided value: -3. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Out of range value provided for benefitSum for existingCoversInPortfolio

if the provided value is out of range, then an error will occur.

Example: An invalid benefitSum with an out of range value
Request:

"existingCoversInPortfolio": [{
    "benefitGroup": 1,
    "acceptanceResult": 1,
    "smokerType": 2,
    "benefitSum": {
        "value": 1000000000,
        "unit": 3
    }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 543,
            "errorMessage": "The provided value for the attribute is out of the valid range. Attribute: benefitSum, given value: 1000000000. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid unit provided for benefitSum for existingCoversInPortfolio

If the provided unit is not of type currency per time unit, an error will occur (see attributes).

Example: An invalid benefitSum with an unspecified unit
Request:

"existingCoversInPortfolio": [{
    "benefitGroup": 1,
    "acceptanceResult": 1,
    "smokerType": 2,
    "benefitSum": {
        "value": 10000,
        "unit": 2
    }
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 517,
            "errorMessage": "The unit is not found for the attribute(s): benefitSum. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Id provided for benefitSum for existingCoversInPortfolio

If an id is provided for a benefitSum, an error will occur. As mentioned above, only unit(s) and value(s) must be provided for the benefitSum(s) (see existingCoversInPortfolio).

Example: An invalid benefitSum with an id
Request:

"existingCoversInPortfolio": [
    {
        "benefitGroup": 1,
        "acceptanceResult": 2,
        "smokerType": 2,
        "benefitSum": {
            "value": 10000,
            "unit": 3,
            "id": "135"
        }
    }
]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 551,
            "errorMessage": "Id: 135 was provided for benefitSum at existingCoversInPortfolio. Only unit and value must be provided for benefitSum(s)."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

Attributes

Unsupported CaseAttribute Type provided

If a CaseAttribute of another type is provided, then an error will occur. In the following example, the attribute with key 371 is not one of the mentioned types above, thus the following error occurs.

Example: An invalid attribute with an unsupported datatype
Request:

"occupation": {
    "key": "252103",
    "deletable": false,
    "attributes": {
        "127": {
            "id": 11
        },
        "135": {
            "value": 45000,
            "unit": 1
        },
        "371": {
            "value": "2"
        }
    }
},

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 524,
            "errorMessage": "For the provided attribute with typeId: 371, no CaseAttributes will be generated. Only attributes of type SingleValue, DBRefValue, StringValue and DateValue are supported."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Unspecified attribute typeId provided

The provided typeId must exist in the database and be attached to a CaseAttribute, otherwise an error will occur.

Example: An invalid attributes set with an unspecified attribute typeId
Request:

...
"attributes": {
    "100000190": {
        "value": "GenRe"
    },
    "214": {
        "value": "banana"
    }
}
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 548,
            "errorMessage": "No attribute with typeId: 214 exists. Please provide a valid attribute key."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid attribute value provided

If an invalid value is provided to an attribute, then an error will occur. In the following example an invalid value was given as id.

Example: An invalid attributes set with an invalid id
Request:

...
"occupation": {
     "key": "252103",
     "deletable": false,
     "attributes": {
        "127": {
            "id": -11
        },
        "135": {
            "value": 45000,
            "unit": 1
        }
     }
},
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 541,
            "errorMessage": "Negative values are not allowed for the provided attribute: 127. Provided value: for id: -11. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Unspecified unit provided

The provided units for attributes will be checked if they are existing in the database, if not then an error will occur. In the following example a non-existent unit was provided.

Example: An invalid attributes set with an unspecified unit
Request:

...
"occupation": {
     "key": "252103",
     "deletable": false,
     "attributes": {
        "127": {
            "id": 11
        },
        "135": {
            "value": 45000,
            "unit": 100
        }
     }
},
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 517,
            "errorMessage": "The unit is not found for the attribute(s): attribute with typeId: 135. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Incompatible attribute(s) provided

The provided attributes will be checked to see what kind of CaseObject items they are attached to. If the provided attribute is incompatible with the item it is attached to, then an error will occur. In the following examples, the invalid attribute of 389 and 127 are provided for Application and requestedBenefits.

Example: An invalid attributes set attached to the Application
Request:

{
  "cspSetId": "1",
  "caseId": "Test001",
  "locale": "en",
  "techSource": {
    "sourceTypeId": 100
  },
  "application": {
    "attributes": {
      "389" : {
        "value": "11",
        "unit": "0"
      }
    }
  }
  ...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 547,
            "errorMessage": "The attribute with typeId: 389 is incompatible for the application. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

Example: An invalid attributes set attached to the requestedBenefits
Request:

"requestedBenefits": [
    {
        "benefitType": 1,
        "smokerType": 2,
        "benefitName": "Klaus Benefits",
        "singleLife": "false",
        "lifeBasicForm": 3,
        "premiumPaymentYears": 10,
        "premiumPaymentAnnual": 5000,
        "singlePremium": 10,
        "insurancePeriodYears": 10,
        "sumInsured": 1000,
        "limitGroup": 1001,
        "disabilityPaymentYears": 10,
        "disabilityWaitingPeriodWeeks": 4,
        "attributes" : {
            "12": {
                "value": 20
            },
            "127": {
                "id": 11
            }
        }
    }
  ...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 547,
            "errorMessage": "The attribute with typeId: 127 is incompatible for the requestedBenefits. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

A further example can be provided for the person types. In the following example, the attribute 100000190 is applicable only for the assured persons. The person Eduard Mustermann is only a policy holder but not an assured person, therefore an error occurs.

Example: An invalid attributes set attached to the ap
Request:

{
    "id": "456",
    "name": "Eduard Mustermann",
    "ap": false,
    "ph": true,
    "age": 32,
    "gender": 2,
    "maritalStatus": 1,
    "residenceCountry": "D",
    "nationality": "D",
    "attributes": {
        "153": {
            "value": 20000
        },
        "100000190": {
            "value": "GenRe"
        }
}
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 547,
            "errorMessage": "The attribute with typeId: 100000190 is incompatible for the Person: Eduard Mustermann, Id: 456. Please check your input data."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Empty attribute provided

If a provided attribute has no id, value and unit, then an error will occur (see attributes).

Example: An empty attribute 127 attached to the occupation
Request:

"occupation": {
    "key": "252103",
    "deletable": false,
    "attributes": {
        "127": {
        },
        "135": {
            "value": 45000,
            "unit": 1
        }
    }
}
...

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 554,
            "errorMessage": "InvalidArgumentException: Empty attribute with typeId: 127 provided. For StringValues and DateValues a value, for DBRefValues an id and for SingleValues a unit-value pair must be provided."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
DateValues
Invalid DateValue with unsupported format provided

In the following example, the provided date is not in the supported format. It should have been 2018.12(YYYY.MM) instead of 12.2018(MM.YYYY).

Example: An invalid DateValue with years and months
Request:

"persons": [{
    "id": "123",
    "name": "Klaus Mustermann",
    "ap": true,
    "ph": false,
    "age": 55,
    "gender": 2,
    "maritalStatus": 2,
    "nationality": "D",
    "residenceCountry": "D",
    "attributes": {
        "100000194":  {
            "value": "10.2018"
        }
    },
    ...
}]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 526,
            "errorMessage": "Provided date is invalid. Date: 10.2018, TypeId: 100000194. Please check your input JSON and provide a valid date."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid DateValue with an invalid month provided

The provided date values will be checked to see if they have valid values; the month value should be not greater than 12 and likewise day value should not be greater than 31.

For example the following date has an invalid month value;

Example: An invalid DateValue with an invalid month
Request:

"disorders": [
     {
         ...
         "attributes": {
            "100000194": {
                "value": "1992.15"
            }
         }
         ...
     }
]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 526,
            "errorMessage": "Provided date is invalid. Date: 1992.15, TypeId: 100000194. Please check your input JSON and provide a valid date."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid DateValue with an invalid day provided

In accordance with the rule mentioned in Invalid DateValue with an invalid month provided, the following date has an invalid day value of 32;

Example: An invalid DateValue with an invalid day
Request:

"disorders": [
     {
         ...
         "attributes": {
            "100000194": {
                "value": "2020.12.32"
            }
         }
         ...
     }
]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 526,
            "errorMessage": "Provided date is invalid. Date: 2020.12.32, TypeId: 100000194. Please check your input JSON and provide a valid date."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid DateValue with unsupported delimiters provided

The below mentioned dates here do not contain dot(s) but unsupported delimiters ("_", "<<"), in this case an error will occur.

Example: An invalid DateValue with an unsupported delimiter
Request:

"disorders": [
     {
         "name": "Asthma",
         "locale": "en",
         "key": "J45.9-001",
         "deletable": false,
         "attributes": {
             "100001905":{
                 "value":"2028_07"
             }
         }
     }
]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 526,
            "errorMessage": "Provided date is invalid. Date: 2028_07, TypeId: 100001905. Please check your input JSON and provide a valid date."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

Example: An invalid DateValue with an unsupported delimiter
Request:

"disorders": [
     {
         "name": "Asthma",
         "locale": "en",
         "key": "J45.9-001",
         "deletable": false,
         "attributes": {
             "100001905":{
                 "value":"2008<<12"
             }
         }
     }
]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 526,
            "errorMessage": "Provided date is invalid. Date: 2008<<12, TypeId: 100001905. Please check your input JSON and provide a valid date."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid DateValue with invalid field length(s) provided

The following date contains 5-digit date field values, in this case an error will occur.

Example: An invalid DateValue with invalid fields
Request:

"disorders": [
     {
         ...
         "attributes": {
            "100000194": {
                "value": "19991.12221.31"
            }
         }
         ...
     }
]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 526,
            "errorMessage": "Provided date is invalid. Date: 19991.12221.31, TypeId: 100000194. Please check your input JSON and provide a valid date."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}
Invalid DateValue with an invalid year provided

The provided date is invalid, it must consist of 4 digits, since only years is provided.

Example: An invalid DateValue with an invalid year
Request:

"disorders": [
     {
         "name": "Asthma",
         "locale": "en",
         "key": "J45.9-001",
         "deletable": false,
         "attributes": {
             "100001905":{
                 "value":"208"
             }
         }
     }
]

Response:
Status: 200 OK

{
    "path": "/compass/createCaseInDB",
    "status": 3,
    "statusText": "FATAL ERROR",
    "errorDescriptions": [
        {
            "errorCode": 526,
            "errorMessage": "Provided date is invalid. Date: 208, TypeId: 100001905. Please check your input JSON and provide a valid date."
        }
    ],
    "jsonContent": null,
    "byteContent": null,
    "textContent": null
}

Error Codes by Category

In this section possible errors are listed per section. To refer to a specific use case, please click on the provided link. All errors return a status 3 and the statusText FATAL ERROR.

Standard Elements

Details
Error Code Message Link

570

"InvalidArgumentException: The provided caseIds in URL: Test0002 and in input JSON: Test0001 are not identical. Please provide identical caseIds both in URL and in input JSON."

Non Matching CaseIds

531

"Empty or no caseId provided. Please provide a caseId."

CaseId not provided

537

"No techSource provided. Please check your input data."

No TechSource provided

540

"Invalid cspSetId provided. Please check your input data."

Invalid CspSetId provided

145

Unrecognized field "blabber" (class com.cr.compass.rest.dto.service.casejson.OccupationDto), not marked as ignorable (5 known properties: "locale", "name", "deletable", "attributes", "key">>)

Unrecognized field provided

Persons

Details
Error Code Message Link

512

"Invalid or missing value for attribute(s): name. Please check your input data. Person Name: null, ID: 123."

Required attribute missing for persons

512

"Invalid or missing value for attribute(s): residenceCountry. Person Name: Klaus Mustermann, ID: 123. Please check your input data."

Invalid attribute value provided for persons

543

"The provided value for the attribute is out of the valid range. Attribute: age. Person Name: Klaus Mustermann, ID: 123, given value: 160. Please check your input data."

Out of range value provided for persons

530

"Input contains empty person(s). Please check your input data."

Empty person provided

516

"The person: Klaus Mustermann is invalid. The person must be either at least Assured Person or Policy Holder or both in order to be added to the CaseData XML Interface."

No Assured Person No Policy Holder provided

523

"The provided persons are invalid. There must be at least one Assured Person in the input data."

No Assured Persons provided

RequestedBenefits

Details
Error Code Message Link

518

"The element: requestedBenefits for Person: Klaus Mustermann is missing in the provided JSON for the person. Please check your input data."

missing requestedBenefits

512

"Inconsistent JSON Structure. For the provided benefitType: 0, both attributes singleLife and lifeBasicForm must be existing in the requestedBenefits: Klaus Benefits."

incompatible benefittype provided

532

"Empty RequestedBenefit provided. Please check your input data."

empty requestedBenefit provided

512

"Invalid or missing value for attribute(s): benefitName. Please check your input data."

missing required attribute for requestedBenefits

541

"Negative values are not allowed for the provided attribute: smokerType. Provided value: -23. Please check your input data."

invalid attribute value provided for requestedBenefits

514

"Either an invalid value or no values provided for one of these variables: benefitSum, sumInsured. A valid value for one of these attributes must be provided at Klaus Benefits."

neither benefitsum nor sumInsured provided for requestedBenefits

514

"Either an invalid value or no values provided for one of these variables: benefitSum, sumInsured. A valid value for one of these attributes must be provided at Klaus Benefits."

both benefitsum and sumInsured provided for requestedBenefits

513

"Inconsistent JSON Structure. The attribute: benefitSum needs to be replaced with sumInsured at Benefit: Klaus Benefits."

sumInsured provided instead of benefitSum for requestedBenefits

513

"Inconsistent JSON Structure. The attribute: benefitSum needs to be replaced with sumInsured at Benefit: Klaus Benefits."

Value not provided for benefitSum

543

"The provided value for the attribute is out of the valid range. Attribute: benefitSum, given value: 1000000000. Please check your input data."

Out of range value provided for benefitSum

541

"Negative values are not allowed for the provided attribute: benefitSum. Provided value: -1000. Please check your input data."

Negative value provided for benefitSum

541

"Negative values are not allowed for the provided attribute: benefitSum. Provided value: -10. Please check your input data."

Negative unit provided for benefitSum

517

"The unit is not found for the attribute(s): benefitSum. Please check your input data."

Invalid unit provided for benefitSum

551

"Id: 12500 was provided for benefitSum at requestedBenefits: Eddy Benefits. Only unit and value must be provided for benefitSum(s)."

Id provided for benefitSum for requestedBenefits

Occupation

Details
Error Code Message Link

546

"locale is missing at occupation. Both name (=Clock maker) and locale are required when no key is provided. Please check your input data."

No locale provided for Occupation

534

"Empty Occupation provided. Please check your input data."

Empty Occupation provided

534

"Empty occupation provided. Please check your input data."

No Key no Location provided for Occupation

520

"Incompatible key and name pair were provided at occupation. Key: 252103, Name: Software developer. Please check your input data."

Invalid Occupation with an incompatible key-name pair

553

"InvalidArgumentException: Either an invalid key: 252103 or an invalid locale: fr provided at occupation. Please provide a valid key-locale pair."

Invalid Occupation with an unspecified locale

552

"InvalidArgumentException: No occupation found for the provided key: 252103s. Please provide a valid key."

Invalid Key provided for Occupation

Pursuit

Details
Error Code Message Link

546

"locale is missing at pursuit. Both name (=Cave diving) and locale are required when no key is provided. Please check your input data."

No Locale provided for Pursuit

536

"Empty pursuit provided. Please check your input data."

Empty Pursuit provided

536

"Empty pursuit provided. Please check your input data."

No Key No Locale provided for Pursuit

520

"Incompatible key and name pair were provided at pursuit. Key: 0250, Name: Bungee jumping. Please check your input data."

Invalid Pursuit with an incompatible key-name pair

553

"InvalidArgumentException: Either an invalid key: 0006 or an invalid locale: fr provided at pursuit. Please provide a valid key-locale pair."

Invalid Pursuit with an unspecified locale

552

"InvalidArgumentException: No pursuit found for the provided key: 0006s. Please provide a valid key."

Invalid Key provided for Pursuit

Disorder

Details
Error Code Message Link

546

"locale is missing at disorder. Both name (=Diabetes) and locale are required when no key is provided. Please check your input data."

Locale not provided for Disorder

535

"Empty Disorder provided. Please check your input data."

Empty Disorder provided

535

"Empty disorder provided. Please check your input data."

No Key, No Locale provided for Disorder

520

"Incompatible key and name pair were provided at disorder. Key: R94.0-002, Name: Diabetes. Please check your input data."

Invalid Disorder with an incompatible Key-Name pair

553

"InvalidArgumentException: Either an invalid key: J45.9-001 or an invalid locale: fr provided at disorder. Please provide a valid key-locale pair."

Invalid Disorder with an unspecified Locale

552

"InvalidArgumentException: No disorder found for the provided key: J45.9s-001. Please provide a valid key."

Invalid Key provided for Disorder

existingCoversInPortfolio

Details
Error Code Message Link

533

"Empty CoverInPortfolio provided. Please check your input data."

Empty existingCoversInPortfolio provided

512

"Invalid or missing value for attribute(s): benefitGroup. Please check your input data."

Required attribute missing for existingCoversInPortfolio

514

"Either an invalid value or no values provided for one of these variables: benefitSum, sumInsured. A valid value for one of these attributes must be provided at one of the existingCoversInPortfolio."

No BenefitSum No SumInsured provided for existingCoversInPortfolio

515

"Inconsistent JSON Structure. The attributes: benefitSum, sumInsured can not both exist at the same time at one of the existingCoversInPortfolio. Only one of them should be provided."

Both BenefitSum and SumInsured provided for existingCoversInPortfolio

514

"Either an invalid value or no values provided for one of these variables: benefitSum, sumInsured. A valid value for one of these attributes must be provided at one of the existingCoversInPortfolio."

Value not provided for benefitSum for existingCoversInPortfolio

541

"Negative values are not allowed for the provided attribute: sumInsured. Provided value: -3000. Please check your input data."

Invalid attribute value provided for existingCoversInPortfolio

517

"The unit is not found for the attribute(s): benefitSum. Please check your input data."

No unit provided for BenefitSum for existingCoversInPortfolio

541

"Negative values are not allowed for the provided attribute: benefitSum. Provided value: -2000. Please check your input data."

Negative value provided for benefitSum for existingCoversInPortfolio

541

"Negative values are not allowed for the provided attribute: benefitSum. Provided value: -3. Please check your input data."

Negative unit provided for benefitSum for existingCoversInPortfolio

517

"The unit is not found for the attribute(s): benefitSum. Please check your input data."

No unit provided for BenefitSum for existingCoversInPortfolio

551

"Id: 135 was provided for benefitSum at existingCoversInPortfolio. Only unit and value must be provided for benefitSum(s)."

Id provided for benefitSum for existingCoversInPortfolio

543

"The provided value for the attribute is out of the valid range. Attribute: benefitSum, given value: 1000000000. Please check your input data."

Out of range value provided for benefitSum for existingCoversInPortfolio

Attributes

Details
Error Code Message Link

524

"For the provided attribute with typeId: 371, no CaseAttributes will be generated. Only attributes of type SingleValue, DBRefValue, StringValue and DateValue are supported."

Unsupported CaseAttribute Type provided

548

"No attribute with typeId: 214 exists. Please provide a valid attribute key."

Unspecified Attribute TypeId provided

541

"Negative values are not allowed for the provided attribute: 127. Provided value: for id: -11. Please check your input data."

Invalid Attribute value provided

517

"The unit is not found for the attribute(s): attribute with typeId: 135. Please check your input data."

Unspecified Unit provided for an attribute

547

"The attribute with typeId: 389 is incompatible for the application. Please check your input data."

Incompatible Attribute(s) provided

554

"Empty attribute with typeId: 127 provided. For StringValues and DateValues a value, for DBRefValues an id and for SingleValues a unit-value pair must be provided."

Incompatible Attribute(s) provided

DateValues

Details
Error Code Message Link

526

"Provided date is invalid. Date: 10.2018, TypeId: 100000194. Please check your input JSON and provide a valid date."

Invalid DateValue with unsupported format provided

526

"Provided date is invalid. Date: 1992.15, TypeId: 100000194. Please check your input JSON and provide a valid date."

Invalid DateValue with an invalid month provided

526

"Provided date is invalid. Date: 2020.12.32, TypeId: 100000194. Please check your input JSON and provide a valid date."

Invalid DateValue with an invalid day provided

526

"Provided date is invalid. Date: 2008<<12, TypeId: 100001905. Please check your input JSON and provide a valid date."

Invalid DateValue with unsupported delimiters provided

526

"Provided date is invalid. Date: 19991.12221.31, TypeId: 100000194. Please check your input JSON and provide a valid date."

Invalid DateValue with invalid field lenght(s) provided

526

"Provided date is invalid. Date: 208, TypeId: 100001905. Please check your input JSON and provide a valid date."

Invalid DateValue with an invalid year provided


1. CompassResponse is a special Element type, which serves as a wrapper for the response data returned by CompassService. It is a standard datatype for the responses of all the interfaces provided by CompassService.
2. createCaseInDB interface
3. The valid values for unit here are currency_per_year(=1) (i.e. £/Year), currency_per_month(=3) or currency_per_day(=29)
4. Please note that this validation works only for numerical values, as the id of the AttributeValue is of type Integer. If a textual value containing characters or strings is provided, then this value will not be parsed correctly and a runtime error will occur, in this case no error messages will not be shown.
5. The key for Diabetes is E14.9-005