# 7. Processes

# 7.1. User management processes

## User creation process

[![user creation process.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/oU0user-creation-process.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/oU0user-creation-process.png)

f an organisation requires a new user, two possible scenarios arise, either the organisation already exists in the system, or a new organisation needs to be created.

### New organisation

For new organisations the request needs to be send to the Application Administrator (MyConnectivity) that is the only role that can create new organisations. The requests is then analysed and approved / rejected by the Application Administrator.

If the organisation is approved, it gets inserted in the system and then the application administrators can treat the API user request as any other user request.

### New API user

New users can be requested to the Application Administrator or, if the organisation already exists in the system and the organisation has an Organisation Administrator, to an Organisation Administrator. The Administrator then analyses the request and can approve or reject it.

If the user is approved, it is inserted in the System and a Administrator confirms its creation to the requestor. The way the user will receive his credentials will depend on the Authentication Provider used and will not be described here.

## User deletion process

Organisation Administrators as well as Application Administrators can mark users as deleted. Marking the users as deleted will make it impossible for that user to login. Furthermore the system will not allow any creation of new links to that user, effectively it is as if the user would not exist anymore.

The user itself does not get deleted and any potential private data will be deleted. The goal of keeping this data is to keep a trace of which user object performed which operations in the system and to be able to identify to which organisation it belonged.

<p class="callout warning">The system will automatically mark users as inactive if they are not used for a period of time defined by MyConnectivity. Inactive users will be deleted after a given time, if they are not re-activated.</p>

## Inactive user deletion process

Users can be marked as inactive, if they will not be using the system for a while (e.g. suspended account or temporary deactivation). Inactive users cannot login an cannot perform any action on the system.

If an inactive user is not re-activated within a reasonable time interval X, the user will be automatically deleted. The exact value of X will be a parameter chosen by MyConnectivity, that can be adapted as needed.

## Organisation deletion process

Organisation deletion follows the same principles as the user deletion process, except that the organisations can only be marked as deleted by Application Administrators.

When an organisation is marked as deleted, all users linked to the organisation are also marked as deleted.

Organisations must be explicitly deleted and are not automatically deleted when no users are assigned to it, this is important as an organisation can also be used in contexts others then document production (e.g. as a owners of equipments or contacts for a building)

# 7.2. Create missing address process

[![create missing address process.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/create-missing-address-process.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/create-missing-address-process.png)

<table class="simple-table" id="bkmrk-name-create-missing-" style="width: 100%; height: 319px;"><thead class="simple-table-header"><tr id="bkmrk-name-create-missing--1" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-name" style="width: 18.354901%; height: 29px;">Name</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-create-missing-addre" style="width: 81.645099%; height: 29px;">Create Missing Address Request</th></tr></thead><tbody><tr id="bkmrk-purpose-allow-editor" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-purpose" style="width: 18.354901%; height: 45px;">**Purpose**</th><td class="align-left" id="bkmrk-allow-editors-to-add" style="width: 81.645099%; height: 45px;">Allow Editors to add missing addresses to the system, so that they are not blocked during the data ingestion processes.</td></tr><tr id="bkmrk-linked-user-stories-" style="height: 20px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-linked-user-stories" style="width: 18.354901%; height: 20px;">**Linked user stories**</th><td class="align-left" id="bkmrk-4.28.-editor---creat" style="width: 81.645099%; height: 20px;">[4.28. Editor - Create temporary address](https://doc.rncv.lu/books/architecture-documentation/page/428-editor-create-temporary-address "4.28. Editor - Create temporary address")</td></tr><tr id="bkmrk-apis-used-post-%2Faddr" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-apis-used" style="width: 18.354901%; height: 29px;">**APIs used**</th><td class="align-left" id="bkmrk-post-%2Faddresses" style="width: 81.645099%; height: 29px;">POST /addresses</td></tr><tr id="bkmrk-scope-this-process-o" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-scope" style="width: 18.354901%; height: 77px;">**Scope**</th><td class="align-left" id="bkmrk-this-process-only-ha" style="width: 81.645099%; height: 77px;">This process only handles the creation of the address in a temporary state. This state will allow the Editors to enter data into the vertical cabling database for that temporary address.   
  
The process of validating and approving the temporary addresses is out of the scope of this process.</td></tr><tr id="bkmrk-roles-organisation-e" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-roles" style="width: 18.354901%; height: 29px;">**Roles**</th><td class="align-left" id="bkmrk-organisation-editor%2C" style="width: 81.645099%; height: 29px;">Organisation Editor, System</td></tr><tr id="bkmrk-input---address-%28man" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input" style="width: 18.354901%; height: 45px;">**Input**</th><td class="align-left" id="bkmrk---address-%28mandatory" style="width: 81.645099%; height: 45px;">- address (mandatory)  
- site structure, including site → blocks → units (optional)</td></tr><tr id="bkmrk-output---temporary-a" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output" style="width: 18.354901%; height: 45px;">**Output**</th><td class="align-left" id="bkmrk---temporary-address-" style="width: 81.645099%; height: 45px;">- temporary address  
- the given site structure or the default one if not structure was provided</td></tr></tbody></table>

## Detailed Process description

### Main process

<table class="simple-table" id="bkmrk-step-description-act" style="width: 100%; height: 802px;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-1" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step" style="width: 5.959476%; height: 29px;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description" style="width: 23.599523%; height: 29px;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29" style="width: 8.820024%; height: 29px;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29" style="width: 15.613826%; height: 29px;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29" style="width: 16.686532%; height: 29px;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points" style="width: 29.32062%; height: 29px;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-an-editor-sends-a-" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1" style="width: 5.959476%; height: 77px;">**1**</th><td class="" id="bkmrk-an-editor-sends-a-%E2%80%9Cc" style="width: 23.599523%; height: 77px;">An Editor sends a “create address request”.</td><td class="" id="bkmrk-editor" style="width: 8.820024%; height: 77px;">Editor</td><td class="" id="bkmrk---address-%28mandatory-1" style="width: 15.613826%; height: 77px;">- Address (mandatory)  
- Site structure (optional)</td><td class="" id="bkmrk--" style="width: 16.686532%; height: 77px;">-</td><td class="" id="bkmrk--1" style="width: 29.32062%; height: 77px;"></td></tr><tr id="bkmrk-2-the-system-checks-" style="height: 109px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2" style="width: 5.959476%; height: 109px;">**2**</th><td class="" id="bkmrk-the-system-checks-if" style="width: 23.599523%; height: 109px;">The system checks if the address already exists</td><td class="" id="bkmrk-system" style="width: 8.820024%; height: 109px;">System</td><td class="" id="bkmrk---address-%28mandatory-2" style="width: 15.613826%; height: 109px;">- Address (mandatory)  
- Site structure (optional)</td><td class="" id="bkmrk---yes-%2F-no" style="width: 16.686532%; height: 109px;">- yes / no</td><td class="" id="bkmrk-if-the-address-does-" style="width: 29.32062%; height: 109px;">**If the address does not exist:**  
- the ingestion process continues (Step 3)  
**If the address exists:**  
- An error is returned (E.1. Address exists)</td></tr><tr id="bkmrk-3-the-system-checks-" style="height: 125px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3" style="width: 5.959476%; height: 125px;">**3**</th><td class="" id="bkmrk-the-system-checks-if-1" style="width: 23.599523%; height: 125px;">The system checks if their are high confidence matches (e.g. potential spelling mistakes in the street / locality)</td><td class="" id="bkmrk-system-1" style="width: 8.820024%; height: 125px;">System</td><td class="" id="bkmrk---address" style="width: 15.613826%; height: 125px;">- Address</td><td class="" id="bkmrk---list-of-high-confi" style="width: 16.686532%; height: 125px;">- list of high confidence matches (if any)</td><td class="" id="bkmrk-if-no-high-confidenc" style="width: 29.32062%; height: 125px;">**If no high confidence matches:** - the ingestion process continues (Step 4)  
**If high confidence matches are found:**  
- Matches are returned to the Editor for verification (secondary process: S.1. High confidence address verification)</td></tr><tr id="bkmrk-4-the-system-creates" style="height: 93px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4" style="width: 5.959476%; height: 93px;">**4**</th><td class="" id="bkmrk-the-system-creates-t" style="width: 23.599523%; height: 93px;">The system creates the address in the database with a flag indicating that it is a temporary address that is not yet validated.</td><td class="" id="bkmrk-system-2" style="width: 8.820024%; height: 93px;">System</td><td class="" id="bkmrk---address-%28with-flag" style="width: 15.613826%; height: 93px;">- Address (with flag validated=false)</td><td class="" id="bkmrk---newly-created-addr" style="width: 16.686532%; height: 93px;">- Newly created address</td><td class="" id="bkmrk--2" style="width: 29.32062%; height: 93px;"></td></tr><tr id="bkmrk-5-the-system-checks-" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-5" style="width: 5.959476%; height: 77px;">**5**</th><td class="" id="bkmrk-the-system-checks-if-2" style="width: 23.599523%; height: 77px;">The system checks if a site structure was sent with the “create address request”.</td><td class="" id="bkmrk-system-3" style="width: 8.820024%; height: 77px;">System</td><td class="" id="bkmrk---create-address-req" style="width: 15.613826%; height: 77px;">- Create address request</td><td class="" id="bkmrk---yes-%2F-no-1" style="width: 16.686532%; height: 77px;">- yes / no</td><td class="" id="bkmrk-if-a-site-structure-" style="width: 29.32062%; height: 77px;">**If a site structure is provided:**  
- the provided structure is created.  
**If no site structure is provided:**  
- a default structure is created.</td></tr><tr id="bkmrk-6.a-the-system-creat" style="height: 61px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-6.a" style="width: 5.959476%; height: 61px;">**6.a**</th><td class="" id="bkmrk-the-system-creates-t-1" style="width: 23.599523%; height: 61px;">The system creates the provided site structure</td><td class="" id="bkmrk-system-4" style="width: 8.820024%; height: 61px;">System</td><td class="" id="bkmrk---requested-site-str" style="width: 15.613826%; height: 61px;">- Requested site structure</td><td class="" id="bkmrk---newly-created-site" style="width: 16.686532%; height: 61px;">- Newly created site structure</td><td class="" id="bkmrk--3" style="width: 29.32062%; height: 61px;"></td></tr><tr id="bkmrk-6.b-the-system-creat" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-6.b" style="width: 5.959476%; height: 77px;">**6.b**</th><td class="" id="bkmrk-the-system-creates-t-2" style="width: 23.599523%; height: 77px;">The system creates the default site structure</td><td class="" id="bkmrk-system-5" style="width: 8.820024%; height: 77px;">System</td><td class="" id="bkmrk---1" style="width: 15.613826%; height: 77px;">-</td><td class="" id="bkmrk---newly-created-defa" style="width: 16.686532%; height: 77px;">- Newly created default site structure</td><td class="" id="bkmrk--4" style="width: 29.32062%; height: 77px;"></td></tr><tr id="bkmrk-7-the-system-returns" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-7" style="width: 5.959476%; height: 77px;">**7**</th><td class="" id="bkmrk-the-system-returns-t" style="width: 23.599523%; height: 77px;">The system returns the created address and the site structure</td><td class="" id="bkmrk-system-6" style="width: 8.820024%; height: 77px;">System</td><td class="" id="bkmrk---2" style="width: 15.613826%; height: 77px;">-</td><td class="" id="bkmrk---newly-created-addr-1" style="width: 16.686532%; height: 77px;">- Newly created address and site structure</td><td class="" id="bkmrk--5" style="width: 29.32062%; height: 77px;"></td></tr><tr id="bkmrk-8-the-editor-gets-th" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-8" style="width: 5.959476%; height: 77px;">**8**</th><td class="" id="bkmrk-the-editor-gets-the-" style="width: 23.599523%; height: 77px;">The Editor gets the newly requested address</td><td class="" id="bkmrk-editor-1" style="width: 8.820024%; height: 77px;">Editor</td><td class="" id="bkmrk---3" style="width: 15.613826%; height: 77px;">-</td><td class="" id="bkmrk---newly-created-addr-2" style="width: 16.686532%; height: 77px;">- Newly created address and site structure</td><td>  
</td></tr></tbody></table>

### Secondary Processes

#### S.1. High confidence address verification

<table class="simple-table" id="bkmrk-step-description-act-2" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-3"><th class="simple-table-header-color simple-table-header" id="bkmrk-step-1" style="width: 6.078665%;">Step</th><th class="simple-table-header-color simple-table-header" id="bkmrk-description-1" style="width: 22.765197%;">Description</th><th class="simple-table-header-color simple-table-header" id="bkmrk-actor%28s%29-1" style="width: 9.77354%;">Actor(s)</th><th class="simple-table-header-color simple-table-header" id="bkmrk-input%28s%29-1" style="width: 15.494636%;">Input(s)</th><th class="simple-table-header-color simple-table-header" id="bkmrk-output%28s%29-1" style="width: 16.448578%;">Output(s)</th><th class="simple-table-header-color simple-table-header" id="bkmrk-decision-points-1" style="width: 29.558573%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-system-returns-a-l"><th class="simple-table-header-color simple-table-header" id="bkmrk-1-1" style="width: 6.078665%;">1</th><td class="" id="bkmrk-system-returns-a-lis" style="width: 22.765197%;">System returns a list of high confidence address matches</td><td class="" id="bkmrk-system-7" style="width: 9.77354%;">System</td><td class="" id="bkmrk---4" style="width: 15.494636%;">-</td><td class="" id="bkmrk---list-of-high-confi-1" style="width: 16.448578%;">- list of high confidence matches</td><td class="" id="bkmrk--6" style="width: 29.558573%;"></td></tr><tr id="bkmrk-2-editor-verifies-if"><th class="simple-table-header-color simple-table-header" id="bkmrk-2-1" style="width: 6.078665%;">2</th><td class="" id="bkmrk-editor-verifies-if-t" style="width: 22.765197%;">Editor verifies if the address is present in the list</td><td class="" id="bkmrk-editor-2" style="width: 9.77354%;">Editor</td><td class="" id="bkmrk---list-of-high-confi-2" style="width: 15.494636%;">- list of high confidence matches</td><td class="" id="bkmrk---yes-%2F-no-2" style="width: 16.448578%;">- yes / no</td><td class="" id="bkmrk-if-address-not-prese" style="width: 29.558573%;">**If address not present:** - the secondary process continues (S.1. Step 3)  
**If address present:**  
- the ingestion process is canceled (E.2. Address exists)</td></tr><tr id="bkmrk-3-the-editor-sends-a"><th class="simple-table-header-color simple-table-header" id="bkmrk-3-1" style="width: 6.078665%;">3</th><td class="" id="bkmrk-the-editor-sends-aga" style="width: 22.765197%;">The Editor sends again a “create address request” but this time flags it as forced (force = true)</td><td class="" id="bkmrk-editor-3" style="width: 9.77354%;">Editor</td><td class="" id="bkmrk---address-%28mandatory-3" style="width: 15.494636%;">- Address (mandatory)  
- Site structure (optional)</td><td class="" id="bkmrk---5" style="width: 16.448578%;">-</td><td class="" id="bkmrk--7" style="width: 29.558573%;"></td></tr><tr id="bkmrk-4-the-system-checks-"><th class="simple-table-header-color simple-table-header" id="bkmrk-4-1" style="width: 6.078665%;">4</th><td class="" id="bkmrk-the-system-checks-if-3" style="width: 22.765197%;">The system checks if the address already exists</td><td class="" id="bkmrk-system-8" style="width: 9.77354%;">System</td><td class="" id="bkmrk---address-%28mandatory-4" style="width: 15.494636%;">- Address (mandatory)  
- Site structure (optional)</td><td class="" id="bkmrk---yes-%2F-no-3" style="width: 16.448578%;">- yes / no</td><td class="" id="bkmrk-if-the-address-does--1" style="width: 29.558573%;">**If the address does not exist:**  
- the main process continues (Step 4)  
**If the address exists:**  
- An error is returned (E.1. Address exists)</td></tr></tbody></table>

### Error Processes

#### E.1. Address exists (System error)

<table class="simple-table" id="bkmrk-step-description-act-4" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-5"><th class="simple-table-header-color simple-table-header" id="bkmrk-step-2" style="width: 6.197855%;">Step</th><th class="simple-table-header-color simple-table-header" id="bkmrk-description-2" style="width: 22.288439%;">Description</th><th class="simple-table-header-color simple-table-header" id="bkmrk-actor%28s%29-2" style="width: 9.65435%;">Actor(s)</th><th class="simple-table-header-color simple-table-header" id="bkmrk-input%28s%29-2" style="width: 15.375447%;">Input(s)</th><th class="simple-table-header-color simple-table-header" id="bkmrk-output%28s%29-2" style="width: 17.063539%;">Output(s)</th><th class="simple-table-header-color simple-table-header" id="bkmrk-decision-points-2" style="width: 29.42037%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-system-returns-an-"><th class="simple-table-header-color simple-table-header" id="bkmrk-1-2" style="width: 6.197855%;">1</th><td class="" id="bkmrk-system-returns-an-er" style="width: 22.288439%;">System returns an error indicating that the address already exists</td><td class="" id="bkmrk-system-9" style="width: 9.65435%;">System</td><td class="" id="bkmrk---6" style="width: 15.375447%;">-</td><td class="" id="bkmrk-error%3A-address-exist" style="width: 17.063539%;">**Error: Address exists**</td><td>  
</td></tr></tbody></table>

#### E.2. Address exists (Editor cancel)

<table class="simple-table" id="bkmrk-step-description-act-6" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-7"><th class="simple-table-header-color simple-table-header" id="bkmrk-step-3" style="width: 5.959476%;">Step</th><th class="simple-table-header-color simple-table-header" id="bkmrk-description-3" style="width: 22.646007%;">Description</th><th class="simple-table-header-color simple-table-header" id="bkmrk-actor%28s%29-3" style="width: 9.296782%;">Actor(s)</th><th class="simple-table-header-color simple-table-header" id="bkmrk-input%28s%29-3" style="width: 15.613826%;">Input(s)</th><th class="simple-table-header-color simple-table-header" id="bkmrk-output%28s%29-3" style="width: 17.043391%;">Output(s)</th><th class="simple-table-header-color simple-table-header" id="bkmrk-decision-points-3" style="width: 29.440519%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-editor-finds-the-a"><th class="simple-table-header-color simple-table-header" id="bkmrk-1-3" style="width: 5.959476%;">1</th><td class="" id="bkmrk-editor-finds-the-add" style="width: 22.646007%;">Editor finds the address in the high confidence matches returned by the system.   
  
The process is canceled.</td><td class="" id="bkmrk-editor-4" style="width: 9.296782%;">Editor</td><td class="" id="bkmrk---7" style="width: 15.613826%;">-</td><td class="" id="bkmrk---8" style="width: 17.043391%;">-</td><td>  
</td></tr></tbody></table>

## Additional Information

### Address matching processes

Exact match (link to algorithm or process)

High confidence match (link to algorithm or process)

### Default site structure

[![default site structure.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/default-site-structure.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/default-site-structure.png)

If no site structure is sent with the “address creation request”, a default site structure will be created composed of a site, to which one block is linked. No units are created by default, as more information is needed to create the units (floor, identification).

### Exceptions

#### \[400 Bad Request\] Invalid input:

If mandatory fields are missing or fields are invalid, the system returns an error message.

#### \[409 Already Exists\] Address already exists

If the **Editor** attempts to add an address that already exists, an error is returned.

#### \[300 Similar exists\] High confidence matches

If the **Editor** attempts to add an address for which the system detects high confidence matches and the force flag is set to false, the system return an error 300 and the list of high confidence matches.

#### \[500 Internal Server Error\] System Error

If the system fails to save changes due to an internal error, it displays an appropriate message and logs the error for further investigation.

# 7.3. Create missing address for existing site or block process

[![create missing address for site or block.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/create-missing-address-for-site-or-block.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/create-missing-address-for-site-or-block.png)

<table class="simple-table" id="bkmrk-name-create-missing-" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-name-create-missing--1"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-name" style="width: 14.776094%;">Name</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-create-missing-addre" style="width: 85.223906%;">Create missing address for existing site or block process</th></tr></thead><tbody><tr id="bkmrk-purpose-allow-editor"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-purpose" style="width: 14.776094%;">**Purpose**</th><td class="align-left" id="bkmrk-allow-editors-to-add" style="width: 85.223906%;">Allow Editors to add missing addresses for an existing site or block to the system, so that they are not blocked during the data ingestion processes.</td></tr><tr id="bkmrk-linked-user-stories-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-linked-user-stories" style="width: 14.776094%;">**Linked user stories**</th><td class="align-left" id="bkmrk-4.29.-editor---creat" style="width: 85.223906%;">[4.29. Editor - Create an additional temporary address for an existing site](https://doc.rncv.lu/books/architecture-documentation/page/429-editor-create-an-additional-temporary-address-for-an-existing-site-canceled "4.29. Editor - Create an additional temporary address for an existing site")

[4.30. Editor - Create an additional temporary address for an existing block](https://doc.rncv.lu/books/architecture-documentation/page/430-editor-create-an-additional-temporary-address-for-an-existing-block "4.30. Editor - Create an additional temporary address for an existing block")

</td></tr><tr id="bkmrk-apis-used-post-%2Fsite"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-apis-used" style="width: 14.776094%;">**APIs used**</th><td class="align-left" id="bkmrk-post-%2Fsites%2F%3Csite-id" style="width: 85.223906%;">**POST** /sites/&lt;site-id&gt;/addresses  
**POST** /blocks/&lt;site-id&gt;/addresses</td></tr><tr id="bkmrk-scope-this-process-o"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-scope" style="width: 14.776094%;">**Scope**</th><td class="align-left" id="bkmrk-this-process-only-ha" style="width: 85.223906%;">This process only handles the creation of the address in a temporary state and link it to an existing site or block. This state will allow the Editors to enter data into the vertical cabling database for that temporary address.   
  
The process of validating and approving the temporary addresses is out of the scope of this process.</td></tr><tr id="bkmrk-roles-editor%2C-system"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-roles" style="width: 14.776094%;">**Roles**</th><td class="align-left" id="bkmrk-editor%2C-system" style="width: 85.223906%;">Editor, System</td></tr><tr id="bkmrk-input---site-id-or-b"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input" style="width: 14.776094%;">**Input**</th><td class="align-left" id="bkmrk---site-id-or-block-i" style="width: 85.223906%;">- site id or block id (mandatory)  
- address (mandatory)</td></tr><tr id="bkmrk-output---temporary-a"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output" style="width: 14.776094%;">**Output**</th><td class="align-left" id="bkmrk---temporary-address-" style="width: 85.223906%;">- temporary address linked to the given site or block  
- the site structure attached the address</td></tr></tbody></table>

## Detailed Process description

### Main process

<table class="simple-table" id="bkmrk-step-description-act" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-1"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step" style="width: 5.959476%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description" style="width: 22.765197%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29" style="width: 8.939213%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29" style="width: 15.613826%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29" style="width: 15.613117%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points" style="width: 31.109172%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-an-editor-sends-a-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1" style="width: 5.959476%;">**1**</th><td class="align-left" id="bkmrk-an-editor-sends-a-%E2%80%9Cc" style="width: 22.765197%;">An Editor sends a “create address request” for an existing site or block.</td><td class="align-left" id="bkmrk-editor" style="width: 8.939213%;">Editor</td><td class="align-left" id="bkmrk---site-id-or-block-i-1" style="width: 15.613826%;">- Site id or Block id  
- Address (mandatory)</td><td class="align-left" id="bkmrk--" style="width: 15.613117%;">-</td><td class="align-left" id="bkmrk--1" style="width: 31.109172%;"></td></tr><tr id="bkmrk-2-the-system-checks-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2" style="width: 5.959476%;">**2**</th><td class="align-left" id="bkmrk-the-system-checks-if" style="width: 22.765197%;">The system checks if the address already exists</td><td class="align-left" id="bkmrk-system" style="width: 8.939213%;">System</td><td class="align-left" id="bkmrk---site-id--address-%28" style="width: 15.613826%;">- Site id  
- Address (mandatory)</td><td class="align-left" id="bkmrk---yes-%2F-no" style="width: 15.613117%;">- yes / no</td><td class="align-left" id="bkmrk-if-the-address-does-" style="width: 31.109172%;">**If the address does not exist:**

- the ingestion process continues (Step 3)

**If the address exists:**

- An error is returned (E.1. Address exists)

</td></tr><tr id="bkmrk-3-the-system-checks-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3" style="width: 5.959476%;">**3**</th><td class="align-left" id="bkmrk-the-system-checks-if-1" style="width: 22.765197%;">The system checks if their are high confidence matches (e.g. potential spelling mistakes in the street / locality)</td><td class="align-left" id="bkmrk-system-1" style="width: 8.939213%;">System</td><td class="align-left" id="bkmrk---address" style="width: 15.613826%;">- Address</td><td class="align-left" id="bkmrk---list-of-high-confi" style="width: 15.613117%;">- list of high confidence matches (if any)</td><td class="align-left" id="bkmrk-if-no-high-confidenc" style="width: 31.109172%;">**If no high confidence matches:**

- the ingestion process continues (Step 4)

**If high confidence matches are found:**

- Matches are returned to the Editor for verification (secondary process: S.1. High confidence address verification)

</td></tr><tr id="bkmrk-4-the-system-creates"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4" style="width: 5.959476%;">**4**</th><td class="align-left" id="bkmrk-the-system-creates-t" style="width: 22.765197%;">The system creates the address in the database with a flag indicating that it is a temporary address that is not yet validated.</td><td class="align-left" id="bkmrk-system-2" style="width: 8.939213%;">System</td><td class="align-left" id="bkmrk---address-%28with-flag" style="width: 15.613826%;">- Address (with flag validated=false)</td><td class="align-left" id="bkmrk---newly-created-addr" style="width: 15.613117%;">- Newly created address</td><td class="align-left" id="bkmrk--2" style="width: 31.109172%;"></td></tr><tr id="bkmrk-5-the-system-links-t"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-5" style="width: 5.959476%;">**5**</th><td class="align-left" id="bkmrk-the-system-links-the" style="width: 22.765197%;">The system links the address to the given site or block</td><td class="align-left" id="bkmrk-system-3" style="width: 8.939213%;">System</td><td class="align-left" id="bkmrk---create-address-req" style="width: 15.613826%;">- Create address request</td><td class="align-left" id="bkmrk---address-linked-to-" style="width: 15.613117%;">- Address linked to the given site or block</td><td class="align-left" id="bkmrk--3" style="width: 31.109172%;"></td></tr><tr id="bkmrk-6-the-system-returns"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-6" style="width: 5.959476%;">**6**</th><td class="align-left" id="bkmrk-the-system-returns-t" style="width: 22.765197%;">The system returns the created address and the site structure</td><td class="align-left" id="bkmrk-system-4" style="width: 8.939213%;">System</td><td class="align-left" id="bkmrk---1" style="width: 15.613826%;">-</td><td class="align-left" id="bkmrk---newly-created-addr-1" style="width: 15.613117%;">- Newly created address and site structure</td><td class="align-left" id="bkmrk--4" style="width: 31.109172%;"></td></tr><tr id="bkmrk-7-the-editor-gets-th"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-7" style="width: 5.959476%;">**7**</th><td class="align-left" id="bkmrk-the-editor-gets-the-" style="width: 22.765197%;">The Editor gets the newly requested address</td><td class="align-left" id="bkmrk-editor-1" style="width: 8.939213%;">Editor</td><td class="align-left" id="bkmrk---2" style="width: 15.613826%;">-</td><td class="align-left" id="bkmrk---newly-created-addr-2" style="width: 15.613117%;">- Newly created address and site structure</td><td class="align-left" style="width: 31.109172%;">  
</td></tr></tbody></table>

### Secondary Processes

#### S.1. High confidence address verification

<table class="simple-table" id="bkmrk-step-description-act-2" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-3"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-1" style="width: 5.721097%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-1" style="width: 23.122765%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-1" style="width: 8.820024%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-1" style="width: 15.733015%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-1" style="width: 15.503292%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-1" style="width: 31.218997%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-system-returns-a-l"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-1" style="width: 5.721097%;">**1**</th><td class="align-left" id="bkmrk-system-returns-a-lis" style="width: 23.122765%;">System returns a list of high confidence address matches</td><td class="align-left" id="bkmrk-system-5" style="width: 8.820024%;">System</td><td class="align-left" id="bkmrk---3" style="width: 15.733015%;">-</td><td class="align-left" id="bkmrk---list-of-high-confi-1" style="width: 15.503292%;">- list of high confidence matches</td><td class="align-left" id="bkmrk--5" style="width: 31.218997%;"></td></tr><tr id="bkmrk-2-editor-verifies-if"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2-1" style="width: 5.721097%;">**2**</th><td class="align-left" id="bkmrk-editor-verifies-if-t" style="width: 23.122765%;">Editor verifies if the address is present in the list</td><td class="align-left" id="bkmrk-editor-2" style="width: 8.820024%;">Editor</td><td class="align-left" id="bkmrk---list-of-high-confi-2" style="width: 15.733015%;">- list of high confidence matches</td><td class="align-left" id="bkmrk---yes-%2F-no-1" style="width: 15.503292%;">- yes / no</td><td class="align-left" id="bkmrk-if-address-not-prese" style="width: 31.218997%;">**If address not present:**

- the secondary process continues (S.1. Step 3)

**If address present:**

- the ingestion process is canceled (E.2. Address exists)

</td></tr><tr id="bkmrk-3-the-editor-sends-a"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3-1" style="width: 5.721097%;">**3**</th><td class="align-left" id="bkmrk-the-editor-sends-aga" style="width: 23.122765%;">The Editor sends again a “create address request” but this time flags it as forced (force = true)</td><td class="align-left" id="bkmrk-editor-3" style="width: 8.820024%;">Editor</td><td class="align-left" id="bkmrk---address-%28mandatory" style="width: 15.733015%;">- Address (mandatory)  
- Site structure (optional)</td><td class="align-left" id="bkmrk---4" style="width: 15.503292%;">-</td><td class="align-left" id="bkmrk--6" style="width: 31.218997%;"></td></tr><tr id="bkmrk-4-the-system-checks-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4-1" style="width: 5.721097%;">**4**</th><td class="align-left" id="bkmrk-the-system-checks-if-2" style="width: 23.122765%;">The system checks if the address already exists</td><td class="align-left" id="bkmrk-system-6" style="width: 8.820024%;">System</td><td class="align-left" id="bkmrk---address-%28mandatory-1" style="width: 15.733015%;">- Address (mandatory)  
- Site structure (optional)</td><td class="align-left" id="bkmrk---yes-%2F-no-2" style="width: 15.503292%;">- yes / no</td><td class="align-left" id="bkmrk-if-the-address-does--1" style="width: 31.218997%;">**If the address does not exist:**

- the main process continues (Step 4)

**If the address exists:**

- An error is returned (E.1. Address exists)

</td></tr></tbody></table>

### Error Processes

#### E.1. Address exists (System error)

<table class="simple-table" id="bkmrk-step-description-act-4" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-5"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-2" style="width: 5.959476%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-2" style="width: 22.526818%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-2" style="width: 8.820024%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-2" style="width: 15.613826%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-2" style="width: 15.162609%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-2" style="width: 31.917248%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-system-returns-an-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-2" style="width: 5.959476%;">**1**</th><td class="align-left" id="bkmrk-system-returns-an-er" style="width: 22.526818%;">System returns an error indicating that the address already exists including the site it is attached to.</td><td class="align-left" id="bkmrk-system-7" style="width: 8.820024%;">System</td><td class="align-left" id="bkmrk---5" style="width: 15.613826%;">-</td><td class="align-left" id="bkmrk-error%3A-address-exist" style="width: 15.162609%;">**Error: Address exists**</td><td class="align-left" style="width: 31.917248%;">  
</td></tr></tbody></table>

#### E.2. Address exists (Editor cancel)

<table class="simple-table" id="bkmrk-step-description-act-6" style="width: 100%; height: 197px;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-7" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-3" style="width: 6.078665%; height: 29px;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-3" style="width: 23.003576%; height: 29px;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-3" style="width: 8.700551%; height: 29px;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-3" style="width: 15.137352%; height: 29px;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-3" style="width: 14.66031%; height: 29px;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-3" style="width: 32.419547%; height: 29px;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-editor-finds-the-a" style="height: 139px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-3" style="width: 6.078665%; height: 139px;">**1**</th><td class="align-left" id="bkmrk-editor-finds-the-add" style="width: 23.003576%; height: 139px;">Editor finds the address in the high confidence matches returned by the system including the site it is attached to.   
  
The process is canceled.</td><td class="" id="bkmrk-editor-4" style="width: 8.700551%; height: 139px;">Editor</td><td class="" id="bkmrk---6" style="width: 15.137352%; height: 139px;">-</td><td class="" id="bkmrk---7" style="width: 14.66031%; height: 139px;">-</td><td style="height: 139px; width: 32.419547%;">  
</td></tr></tbody></table>

## Additional Information

### Address matching processes

Exact match (link to algorithm or process)

High confidence match (link to algorithm or process)

### Exceptions

#### \[400 Bad Request\] Invalid input:

If mandatory fields are missing or fields are invalid, the system returns an error message.

#### \[409 Already Exists\] Address already exists

If the **Editor** attempts to add an address that already exists, an error is returned.

#### \[300 Similar exists\] High confidence matches

If the **Editor** attempts to add an address for which the system detects high confidence matches and the force flag is set to false, the system return an error 300 and the list of high confidence matches.

#### \[500 Internal Server Error\] System Error

If the system fails to save changes due to an internal error, it displays an appropriate message and logs the error for further investigation.

# 7.4. Address ingestion via the ETL process

[![address ingestion process.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/address-ingestion-process.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/address-ingestion-process.png)

<table border="1" id="bkmrk-the-background-color" style="border-collapse: collapse; width: 100%; border-width: 1px; background-color: rgb(236, 240, 241); height: 116.4375px;"><tbody><tr style="height: 116.4375px;"><td style="height: 116.4375px;">The background colors of the above image are to be interpreted as:

- <span style="color: rgb(132, 63, 161);">**purple**</span>: the core application a.k.a. backend that will be built in the context of this project
- **<span style="color: rgb(22, 145, 121);">green</span>**: supporting systems that will be used in the context of this project
- **<span style="color: rgb(35, 111, 161);">blue</span>**: trusted parties
- **<span style="color: rgb(186, 55, 42);">red</span>**: external users of the system

</td></tr></tbody></table>

The ETL process that is responsible for ingesting data from one or multiple trusted external Address Data Providers, is a key element of the RNCV. The ETL is responsible for:

- Ingest new addresses present on the Address Data Providers.
- Correct existing addresses
- Validate addresses ingested by the Data producers

You will find below a high level representation of the ingestion process. The exact algorithms used by the ETL process are out of the scope of this project and therefore are abstracted as a black box in the process description

<p class="callout warning">The ETL algorithm is out of scope of this project</p>

## ETL Process

[![etl process.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/etl-process.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/etl-process.png)

<table class="simple-table" id="bkmrk-name-address-ingesti"><thead class="simple-table-header"><tr id="bkmrk-name-address-ingesti-1"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-name">Name</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-address-ingestion-vi">Address ingestion via the ETL process</th></tr></thead><tbody><tr id="bkmrk-purpose-ingest-and-v"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-purpose">**Purpose**</th><td class="align-left" id="bkmrk-ingest-and-validate-">Ingest and validate address data to maintain the quality of the RNCV’s address database database to the highest standards</td></tr><tr id="bkmrk-linked-user-stories-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-linked-user-stories">**Linked user stories**</th><td class="align-left" id="bkmrk-4.67.-etl---retrieve">[4.67. ETL - Retrieve addresses](https://doc.rncv.lu/books/architecture-documentation/page/467-etl-retrieve-addresses "4.67. ETL - Retrieve addresses")

[4.68. ETL - Create and update addresses](https://doc.rncv.lu/books/architecture-documentation/page/468-etl-create-and-update-addresses "4.68. ETL - Create and update addresses")

</td></tr><tr id="bkmrk-apis-used-get-%2Fetl%2Fa"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-apis-used">**APIs used**</th><td class="align-left" id="bkmrk-get-%2Fetl%2Faddressespo">**GET** /etl/addresses **POST** /etl/addresses  
**GET** /etl/addresses/&lt;address-id&gt;  
**PUT** /etl/addresses/&lt;address-id&gt;  
**PATCH** /etl/addresses/&lt;address-id&gt;</td></tr><tr id="bkmrk-scope-this-process-h"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-scope">**Scope**</th><td class="align-left" id="bkmrk-this-process-handles">This process handles the ingestion of addresses into the RNCV’s address database. It also handles the correction and validation of existing address data.  
  
This exact algorithm used by the ETL process is out of scope of this process.</td></tr><tr id="bkmrk-roles-etl%2C-system"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-roles">**Roles**</th><td class="align-left" id="bkmrk-etl%2C-system">ETL, System</td></tr><tr id="bkmrk-input---addresses-fr"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input">**Input**</th><td class="align-left" id="bkmrk---addresses-from-the">- Addresses from the Address Data Providers  
- Algorithm for the address data consolidation</td></tr><tr id="bkmrk-output---consolidate"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output">**Output**</th><td class="align-left" id="bkmrk---consolidated-and-u">- Consolidated and up to date RNCV address database</td></tr></tbody></table>

## Detailed Process description

### Main process

<table class="simple-table" id="bkmrk-step-description-act" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-1"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step" style="width: 5.721097%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description" style="width: 26.460072%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29" style="width: 8.581645%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29" style="width: 16.805721%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29" style="width: 16.448294%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points" style="width: 25.863982%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-etl-process-is"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1" style="width: 5.721097%;">**1**</th><td class="align-left" id="bkmrk-the-etl-process-is-p" style="width: 26.460072%;">The ETL process is periodically triggered</td><td class="align-left" id="bkmrk-etl" style="width: 8.581645%;">ETL</td><td class="align-left" id="bkmrk--" style="width: 16.805721%;">-</td><td class="align-left" id="bkmrk---1" style="width: 16.448294%;">-</td><td class="align-left" id="bkmrk--2" style="width: 25.863982%;"></td></tr><tr id="bkmrk-2-the-etl-process-re"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2" style="width: 5.721097%;">**2**</th><td class="align-left" id="bkmrk-the-etl-process-retr" style="width: 26.460072%;">The ETL process retrieves the data to synchronise from the Address Data Providers</td><td class="align-left" id="bkmrk-etl-1" style="width: 8.581645%;">ETL</td><td class="align-left" id="bkmrk---2" style="width: 16.805721%;">-</td><td class="align-left" id="bkmrk---addresses-to-synch" style="width: 16.448294%;">- addresses to synchronise</td><td class="align-left" id="bkmrk--3" style="width: 25.863982%;"></td></tr><tr id="bkmrk-3-the-etl-process-pr"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3" style="width: 5.721097%;">**3**</th><td class="align-left" id="bkmrk-the-etl-process-proc" style="width: 26.460072%;">The ETL process process one address from the addresses to synchronise (could be done in parallel)</td><td class="align-left" id="bkmrk-etl-2" style="width: 8.581645%;">ETL</td><td class="align-left" id="bkmrk---addresses-to-synch-1" style="width: 16.805721%;">- addresses to synchronise</td><td class="align-left" id="bkmrk---next-address-to-sy" style="width: 16.448294%;">- next address to synchronise</td><td class="align-left" id="bkmrk--4" style="width: 25.863982%;"></td></tr><tr id="bkmrk-4-the-etl-process-ex"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4" style="width: 5.721097%;">**4**</th><td class="align-left" id="bkmrk-the-etl-process-extr" style="width: 26.460072%;">The ETL process extracts the address information to be stored in the RNCV address database</td><td class="align-left" id="bkmrk-etl-3" style="width: 8.581645%;">ETL</td><td class="align-left" id="bkmrk---address-to-synchro" style="width: 16.805721%;">- address to synchronise</td><td class="align-left" id="bkmrk---address-informatio" style="width: 16.448294%;">- address information to be ingested</td><td class="align-left" id="bkmrk--5" style="width: 25.863982%;"></td></tr><tr id="bkmrk-5-the-etl-process-se"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-5" style="width: 5.721097%;">**5**</th><td class="align-left" id="bkmrk-the-etl-process-sear" style="width: 26.460072%;">The ETL process searches for address matches in the RNCV address database</td><td class="align-left" id="bkmrk-etl-4" style="width: 8.581645%;">ETL</td><td class="align-left" id="bkmrk---address-informatio-1" style="width: 16.805721%;">- address information to be ingested</td><td class="align-left" id="bkmrk---address-present-in" style="width: 16.448294%;">- address present in the RNCV address database if any</td><td class="align-left" id="bkmrk--6" style="width: 25.863982%;"></td></tr><tr id="bkmrk-6-the-etl-process-ch"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-6" style="width: 5.721097%;">**6**</th><td class="align-left" id="bkmrk-the-etl-process-chec" style="width: 26.460072%;">The ETL process checks if the address is present in the RNCV address database</td><td class="align-left" id="bkmrk-etl-5" style="width: 8.581645%;">ETL</td><td class="align-left" id="bkmrk---address-present-in-1" style="width: 16.805721%;">- address present in the RNCV address database if any</td><td class="align-left" id="bkmrk---yes-%2F-no" style="width: 16.448294%;">- yes / no</td><td class="align-left" id="bkmrk-if-the-address-is-pr" style="width: 25.863982%;">**If the address is present:**  
Go to step 7  
**Else:**  
Go to secondary process S.1.</td></tr><tr id="bkmrk-7-correct-address-in"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-7" style="width: 5.721097%;">**7**</th><td class="align-left" id="bkmrk-correct-address-info" style="width: 26.460072%;">Correct address information and set the flag “validated = true”</td><td class="align-left" id="bkmrk-etl-6" style="width: 8.581645%;">ETL</td><td class="align-left" id="bkmrk---nrvc-address" style="width: 16.805721%;">- RNCV address</td><td class="align-left" id="bkmrk---corrected-nrvc-add" style="width: 16.448294%;">- Corrected RNCV address with flag “validated = true”</td><td class="align-left" id="bkmrk--7" style="width: 25.863982%;"></td></tr><tr id="bkmrk-8-system-applies-the"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-8" style="width: 5.721097%;">**8**</th><td class="align-left" id="bkmrk-system-applies-the-a" style="width: 26.460072%;">System applies the address update</td><td class="align-left" id="bkmrk-system" style="width: 8.581645%;">System</td><td class="align-left" id="bkmrk---corrected-nrvc-add-1" style="width: 16.805721%;">- Corrected RNCV address with flag “validated = true”</td><td class="align-left" id="bkmrk---corrected-nrvc-add-2" style="width: 16.448294%;">- Corrected RNCV address with flag “validated = true”</td><td class="align-left" id="bkmrk--8" style="width: 25.863982%;"></td></tr><tr id="bkmrk-9-the-etl-process-ch"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-9" style="width: 5.721097%;">**9**</th><td class="align-left" id="bkmrk-the-etl-process-chec-1" style="width: 26.460072%;">The ETL process checks if more addresses need to be synchronised</td><td class="align-left" id="bkmrk-etl-7" style="width: 8.581645%;">ETL</td><td class="align-left" id="bkmrk---addresses-that-sti" style="width: 16.805721%;">- addresses that still need to be synchronised</td><td class="align-left" id="bkmrk---yes-%2F-no-1" style="width: 16.448294%;">- yes / no</td><td class="align-left" id="bkmrk-if-there-are-still-a" style="width: 25.863982%;">**If there are still addresses to be synchronised:** Go to step 3  
**Else:** Go to step 10</td></tr><tr id="bkmrk-10-the-etl-process-t"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-10" style="width: 5.721097%;">**10**</th><td class="align-left" id="bkmrk-the-etl-process-term" style="width: 26.460072%;">The ETL process terminates successfully</td><td class="align-left" id="bkmrk-etl-8" style="width: 8.581645%;">ETL</td><td class="align-left" id="bkmrk---3" style="width: 16.805721%;">-</td><td class="align-left" id="bkmrk---4" style="width: 16.448294%;">-</td><td class="align-left">  
</td></tr></tbody></table>

### Secondary Processes

#### S.1. Address does not exist in the RNCV address database

<table class="simple-table" id="bkmrk-step-description-act-2" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-3"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-1" style="width: 5.959476%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-1" style="width: 20.619785%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-1" style="width: 8.581645%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-1" style="width: 15.733015%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-1" style="width: 15.851779%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-1" style="width: 33.254299%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-etl-process-cr"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-1" style="width: 5.959476%;">**1**</th><td class="align-left" id="bkmrk-the-etl-process-crea" style="width: 20.619785%;">The ETL process creates a new Address with the flag “validated = true”</td><td class="align-left" id="bkmrk-etl-9" style="width: 8.581645%;">ETL</td><td class="align-left" id="bkmrk---address-informatio-2" style="width: 15.733015%;">- address information to be ingested</td><td class="align-left" id="bkmrk---nrvc-address-to-be" style="width: 15.851779%;">- RNCV address to be created</td><td class="align-left" id="bkmrk--9" style="width: 33.254299%;"></td></tr><tr id="bkmrk-2-the-system-creates"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2-1" style="width: 5.959476%;">**2**</th><td class="align-left" id="bkmrk-the-system-creates-t" style="width: 20.619785%;">The system creates the given address</td><td class="align-left" id="bkmrk-system-1" style="width: 8.581645%;">System</td><td class="align-left" id="bkmrk---nrvc-address-to-be-1" style="width: 15.733015%;">- RNCV address to be created</td><td class="align-left" id="bkmrk---nrvc-created-nrvc" style="width: 15.851779%;">- RNCV address created </td><td class="align-left" id="bkmrk-go-to-main-process-s" style="width: 33.254299%;">Go to Main process step 9</td></tr></tbody></table>

## Additional Information

### Error processing during the ETL process

If an error occurs during the ETL process (internal error, or error while using an external API), the system should log the error and process the next address. An error triggered during the processing of one address should never interrupting the ETL process for subsequent addresses, except if it is a system wide error, that would prevent all addresses from being processed.

# 7.5. Send update vertical cabling request process

[![update cabling request process.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/update-cabling-request-process.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/update-cabling-request-process.png)

<table class="simple-table" id="bkmrk-name-send-update-ver"><thead class="simple-table-header"><tr id="bkmrk-name-send-update-ver-1"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-name">Name</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-send-update-vertical">Send update vertical cabling request process</th></tr></thead><tbody><tr id="bkmrk-purpose-allow-editor"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-purpose">**Purpose**</th><td class="align-left" id="bkmrk-allow-editors-to-sen">Allow Editors to send an update request for a vertical cabling entry between two equipments</td></tr><tr id="bkmrk-linked-user-stories"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-linked-user-stories-1">**Linked user stories**</th><td class="align-left" id="bkmrk--1">[4.46. Editor - Send an update vertical cabling request](https://doc.rncv.lu/books/architecture-documentation/page/446-editor-send-an-update-vertical-cabling-request "4.46. Editor - Send an update vertical cabling request")

</td></tr><tr id="bkmrk-apis-used-post-%2Fphys"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-apis-used">**APIs used**</th><td class="align-left" id="bkmrk-post-%2Fphysical-links">**POST** /physical-links</td></tr><tr id="bkmrk-scope-this-process-o"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-scope">**Scope**</th><td class="align-left" id="bkmrk-this-process-only-ha">This process only handles the creation of an update request for a vertical cabling entry between two existing equipments.  
  
The process of validating and approving the entry is handled in a dedicated process.</td></tr><tr id="bkmrk-roles-organisation-e"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-roles">**Roles**</th><td class="align-left" id="bkmrk-organisation-editor%2C">Organisation Editor, System</td></tr><tr id="bkmrk-input---source-equip"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input">**Input**</th><td class="align-left" id="bkmrk---source-equipment-%28">- source equipment (mandatory)  
- destination equipment or destination unit (mandatory)  
- link type (mandatory)  
- additional metadata</td></tr><tr id="bkmrk-output---confirmatio"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output">**Output**</th><td class="align-left" id="bkmrk---confirmation-that-">- confirmation that the update request has been transmitted</td></tr></tbody></table>

## Detailed Process description

### Main Process

<table class="simple-table" id="bkmrk-step-description-act" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-1"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step" style="width: 6.197855%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description" style="width: 23.122765%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29" style="width: 8.700834%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29" style="width: 17.520858%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29" style="width: 15.97253%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points" style="width: 28.485158%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-an-editor-sends-a-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1" style="width: 6.197855%;">**1**</th><td class="align-left" id="bkmrk-an-editor-sends-a-%E2%80%9Cu" style="width: 23.122765%;">An Editor sends a “update vertical cabling request” for two existing equipments and a specific link type.</td><td class="align-left" id="bkmrk-editor" style="width: 8.700834%;">Editor</td><td class="align-left" id="bkmrk---source-equipment-%28-1" style="width: 17.520858%;">- source equipment (mandatory)  
- destination equipment or destination unit (mandatory)  
- cable type (mandatory)  
- additional metadata</td><td class="align-left" id="bkmrk--" style="width: 15.97253%;">-</td><td class="align-left" id="bkmrk--2" style="width: 28.485158%;"></td></tr><tr id="bkmrk-2-the-system-verifie"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2" style="width: 6.197855%;">**2**</th><td class="align-left" id="bkmrk-the-system-verifies-" style="width: 23.122765%;">The System verifies that the two equipments exist</td><td class="align-left" id="bkmrk-system" style="width: 8.700834%;">System</td><td class="align-left" id="bkmrk--3" style="width: 17.520858%;"></td><td class="align-left" id="bkmrk---yes-%2F-no" style="width: 15.97253%;">- yes / no</td><td class="align-left" id="bkmrk-if-the-equipments-%2F-" style="width: 28.485158%;">**If the equipments / unit exist:**  
- the process continues (Step 3)  
**If the equipments / unit do not exist:**  
- An error is returned (E.1. Equipments not found)</td></tr><tr id="bkmrk-3-the-system-verifie"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3" style="width: 6.197855%;">**3**</th><td class="align-left" id="bkmrk-the-system-verifies--1" style="width: 23.122765%;">The System verifies if the equipments / unit are geographically close enough to be connected</td><td class="align-left" id="bkmrk-system-1" style="width: 8.700834%;">System</td><td class="align-left" id="bkmrk---equipments-%2F-unit-" style="width: 17.520858%;">- equipments / unit addresses</td><td class="align-left" id="bkmrk---yes-%2F-no-1" style="width: 15.97253%;">- yes / no</td><td class="align-left" id="bkmrk-if-the-equipments-%2F--1" style="width: 28.485158%;">**If the equipments / unit are close enough:**  
- the process continues (Step 4)  
**If the equipments / unit are not close enough:**  
- An error is returned (E.2. Equipments out of reach)</td></tr><tr id="bkmrk-4-the-system-stores-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4" style="width: 6.197855%;">**4**</th><td class="align-left" id="bkmrk-the-system-stores-th" style="width: 23.122765%;">The System stores the connection in the database, adds the flag “approved = false” and the organisation of the Editor</td><td class="align-left" id="bkmrk-system-2" style="width: 8.700834%;">System</td><td class="align-left" id="bkmrk---update-vertical-ca" style="width: 17.520858%;">- update vertical cabling request</td><td class="align-left" id="bkmrk---connection-stored-" style="width: 15.97253%;">- connection stored with the flag “approved = false” and linked to the Editor’s organisation</td><td class="align-left" id="bkmrk--4" style="width: 28.485158%;"></td></tr><tr id="bkmrk-5-the-system-trigger"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-5" style="width: 6.197855%;">**5**</th><td class="align-left" id="bkmrk-the-system-triggers-" style="width: 23.122765%;">The System triggers the approval process for the created connection</td><td class="align-left" id="bkmrk-system-3" style="width: 8.700834%;">System</td><td class="align-left" id="bkmrk---stored-connection" style="width: 17.520858%;">- stored connection</td><td class="align-left" id="bkmrk---approval-process-i" style="width: 15.97253%;">- approval process is triggered</td><td class="align-left" id="bkmrk--5" style="width: 28.485158%;"></td></tr><tr id="bkmrk-6-the-editor-gets-a-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-6" style="width: 6.197855%;">**6**</th><td class="align-left" id="bkmrk-the-editor-gets-a-co" style="width: 23.122765%;">The Editor gets a confirmation that the update was successfully submitted</td><td class="align-left" id="bkmrk-editor-1" style="width: 8.700834%;">Editor</td><td class="align-left" id="bkmrk---submission-confirm" style="width: 17.520858%;">- submission confirmation</td><td class="align-left" id="bkmrk--6" style="width: 15.97253%;"></td><td>  
</td></tr></tbody></table>

### Error Processes

#### E.1. Equipments or unit not found

<table class="simple-table" id="bkmrk-step-description-act-2" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-3"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-1" style="width: 5.959476%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-1" style="width: 22.765197%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-1" style="width: 9.058403%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-1" style="width: 16.924911%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-1" style="width: 16.708525%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-1" style="width: 28.583489%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-system-returns-an-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-1" style="width: 5.959476%;">**1**</th><td class="align-left" id="bkmrk-system-returns-an-er" style="width: 22.765197%;">System returns an error indicating that one or both equipment(s) or the unit do not exist</td><td class="align-left" id="bkmrk-system-4" style="width: 9.058403%;">System</td><td class="align-left" id="bkmrk---1" style="width: 16.924911%;">-</td><td class="align-left" id="bkmrk-error%3A-equipments-or" style="width: 16.708525%;">**Error: Equipments or unit do not exist**</td><td class="align-left" style="width: 28.583489%;">  
</td></tr></tbody></table>

#### E.2. <span class="notion-enable-hover" data-token-index="1">Equipments or unit</span> out of reach

<table class="simple-table" id="bkmrk-step-description-act-4" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-5"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-2" style="width: 5.721097%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-2" style="width: 22.884386%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-2" style="width: 8.939213%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-2" style="width: 17.16329%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-2" style="width: 16.710795%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-2" style="width: 28.581219%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-system-returns-an--1"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-2" style="width: 5.721097%;">**1**</th><td class="align-left" id="bkmrk-system-returns-an-er-1" style="width: 22.884386%;">System returns an error indicating that the two equipments or uni are not geographically close enough to be connected.</td><td class="align-left" id="bkmrk-system-5" style="width: 8.939213%;">System</td><td class="align-left" id="bkmrk---2" style="width: 17.16329%;">-</td><td class="align-left" id="bkmrk-error%3A-equipments-or-1" style="width: 16.710795%;">**Error: Equipments or unit not in connection range**</td><td class="align-left" style="width: 28.581219%;">  
</td></tr></tbody></table>

## Additional Information

### Deleting a cable type in between two equipments or unit

Deleting a cable type between two instances follows the same process as above. In that case the user indicates in the update request that he wants to flag the connection as “deleted = true”.

### Exceptions

#### \[400 Bad Request\] Invalid input:

If mandatory fields are missing or fields are invalid, the system returns an error message. This includes the case in which one or both equipment(s) do not exist.

#### \[409 Conflict\] Equipments or unit out of reach

If the **Editor** attempts to add connection between two equipments or unit that are geographically too far away to be connected, the system should return an error.

#### \[500 Internal Server Error\] System Error

If the system fails to save changes due to an internal error, it displays an appropriate message and logs the error for further investigation.

# 7.6. Approve update vertical cabling request

[![approve vertical cabling.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/approve-vertical-cabling.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/approve-vertical-cabling.png)

<table class="simple-table" id="bkmrk-name-approve-update-" style="width: 95.238095%; height: 408px;"><thead class="simple-table-header"><tr id="bkmrk-name-approve-update--1" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-name" style="width: 18.494141%; height: 29px;">Name</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-approve-update-verti" style="width: 81.419922%; height: 29px;">Approve update vertical cabling request</th></tr></thead><tbody><tr id="bkmrk-purpose-allow-approv" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-purpose" style="width: 18.494141%; height: 45px;">**Purpose**</th><td class="align-left" id="bkmrk-allow-approvers-to-v" style="width: 81.419922%; height: 45px;">Allow Approvers to validate an update request for a vertical cabling entry between two equipments</td></tr><tr id="bkmrk-linked-user-stories-" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-linked-user-stories" style="width: 18.494141%; height: 45px;">**Linked user stories**</th><td class="align-left" id="bkmrk-4.51.-approver---app" style="width: 81.419922%; height: 45px;">[4.51. Approver - Approve or reject update vertical cabling request](https://doc.rncv.lu/books/architecture-documentation/page/451-approver-approve-or-reject-update-vertical-cabling-request "4.51. Approver - Approve or reject update vertical cabling request")

[4.56. Organisation Approver - Approve or reject update vertical cabling request for organisation](https://doc.rncv.lu/books/architecture-documentation/page/456-organisation-approver-approve-or-reject-update-vertical-cabling-request-for-organisation "4.56. Organisation Approver - Approve or reject update vertical cabling request for organisation")

</td></tr><tr id="bkmrk-apis-used-put-%2Fphysi" style="height: 61px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-apis-used" style="width: 18.494141%; height: 61px;">**APIs used**</th><td class="align-left" id="bkmrk-put-%2Fphysical-links%2F" style="width: 81.419922%; height: 61px;">PUT /physical-links/&lt;physical-link-id&gt;/approve  
PUT /physical-links/&lt;physical-link-id&gt;/reject  
PUT or PATCH /physical-links/&lt;physical-link-id&gt;</td></tr><tr id="bkmrk-scope-this-process-o" style="height: 61px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-scope" style="width: 18.494141%; height: 61px;">**Scope**</th><td class="align-left" id="bkmrk-this-process-only-ha" style="width: 81.419922%; height: 61px;">This process only handles the validation of an already created update vertical cabling request  
  
The process of creating the entry is handled in a dedicated process.</td></tr><tr id="bkmrk-roles-system%2C-approv" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-roles" style="width: 18.494141%; height: 29px;">**Roles**</th><td class="align-left" id="bkmrk-system%2C-approver-%2F-g" style="width: 81.419922%; height: 29px;">System, Approver / Global Approver</td></tr><tr id="bkmrk-input---id-of-the-ph" style="height: 109px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input" style="width: 18.494141%; height: 109px;">**Input**</th><td class="align-left" id="bkmrk---id-of-the-physical" style="width: 81.419922%; height: 109px;">- id of the physical link update to validate  
- optionally the information to amend:  
- source equipment (mandatory)  
- destination equipment or unit (mandatory)  
- cable type (mandatory)  
- additional metadata</td></tr><tr id="bkmrk-output---confirmatio" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output" style="width: 18.494141%; height: 29px;">**Output**</th><td class="align-left" id="bkmrk---confirmation-that-" style="width: 81.419922%; height: 29px;">- confirmation that the update request has been approved/rejected</td></tr></tbody></table>

## Detailed Process description

### Main Process

<table class="simple-table" id="bkmrk-step-description-act" style="width: 100%; height: 978px;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-1" style="height: 93px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step" style="width: 6.197855%; height: 93px;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description" style="width: 24.672229%; height: 93px;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29" style="width: 9.296782%; height: 93px;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29" style="width: 16.089875%; height: 93px;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29" style="width: 12.515608%; height: 93px;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points" style="width: 31.227652%; height: 93px;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-system-sends-o" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1" style="width: 6.197855%; height: 77px;">**1**</th><td class="align-left" id="bkmrk-the-system-sends-out" style="width: 24.672229%; height: 77px;">The System sends out notifications to the Global approvers and organisation approvers, indicating that an approval a pending.</td><td class="align-left" id="bkmrk-system" style="width: 9.296782%; height: 77px;">System</td><td class="align-left" id="bkmrk---outside-trigger-%28e" style="width: 16.089875%; height: 77px;">- Outside trigger (e.g. Editor sent a new update request)</td><td class="align-left" id="bkmrk---notification-to-th" style="width: 12.515608%; height: 77px;">- notification to the Global and organisation Approvers</td><td class="align-left" id="bkmrk--1" style="width: 31.227652%; height: 77px;"></td></tr><tr id="bkmrk-2-the-approver-verif" style="height: 125px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2" style="width: 6.197855%; height: 125px;">**2**</th><td class="align-left" id="bkmrk-the-approver-verifie" style="width: 24.672229%; height: 125px;">The Approver verifies if the entry is valid and up to the expected quality standards</td><td class="align-left" id="bkmrk-approver" style="width: 9.296782%; height: 125px;">Approver</td><td class="align-left" id="bkmrk---update-physical-li" style="width: 16.089875%; height: 125px;">- Update physical link request</td><td class="align-left" id="bkmrk---yes-%2F-no" style="width: 12.515608%; height: 125px;">- yes / no</td><td class="align-left" id="bkmrk-if-the-entry-is-vali" style="width: 31.227652%; height: 125px;">**If the entry is valid:**  
- Go to step 4  
**Else:**  
- Go to secondary process S.1</td></tr><tr id="bkmrk-3-the-approver-verif" style="height: 125px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3" style="width: 6.197855%; height: 125px;">**3**</th><td class="align-left" id="bkmrk-the-approver-verifie-1" style="width: 24.672229%; height: 125px;">The Approver verifies if pictures linked to the entry contain any private data</td><td class="align-left" id="bkmrk-approver-1" style="width: 9.296782%; height: 125px;">Approver</td><td class="align-left" id="bkmrk---update-physical-li-1" style="width: 16.089875%; height: 125px;">- Update physical link request</td><td class="align-left" id="bkmrk---yes-%2F-no-1" style="width: 12.515608%; height: 125px;">- yes / no</td><td class="align-left" id="bkmrk-if-the-entry-is-vali-1" style="width: 31.227652%; height: 125px;">**If the entry is valid:**  
- Go to step 4  
**Else:**  
- Go to secondary process S.1</td></tr><tr id="bkmrk-4-the-approver-appro" style="height: 109px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4" style="width: 6.197855%; height: 109px;">**4**</th><td class="align-left" id="bkmrk-the-approver-approve" style="width: 24.672229%; height: 109px;">The Approver approves the entry</td><td class="align-left" id="bkmrk-approver-2" style="width: 9.296782%; height: 109px;">Approver</td><td class="align-left" id="bkmrk---update-physical-li-2" style="width: 16.089875%; height: 109px;">- Update physical link request</td><td class="align-left" id="bkmrk---update-physical-li-3" style="width: 12.515608%; height: 109px;">- update physical link request approval</td><td class="align-left" id="bkmrk--2" style="width: 31.227652%; height: 109px;"></td></tr><tr id="bkmrk-5-the-system-verifie" style="height: 109px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-5" style="width: 6.197855%; height: 109px;">**5**</th><td class="align-left" id="bkmrk-the-system-verifies-" style="width: 24.672229%; height: 109px;">The System verifies if the equipments/unit for which a physical link approval is sent exist</td><td class="align-left" id="bkmrk-system-1" style="width: 9.296782%; height: 109px;">System</td><td class="align-left" id="bkmrk---update-physical-li-4" style="width: 16.089875%; height: 109px;">- update physical link request to approve</td><td class="align-left" id="bkmrk---yes-%2F-no-2" style="width: 12.515608%; height: 109px;">- yes / no</td><td class="align-left" id="bkmrk-if-the-equipments%2Fun" style="width: 31.227652%; height: 109px;">**If the equipments/unit exist:** - Go to step 6  
**Else:** - Go to error E.1</td></tr><tr id="bkmrk-6-the-system-verifie" style="height: 125px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-6" style="width: 6.197855%; height: 125px;">**6**</th><td class="align-left" id="bkmrk-the-system-verifies--1" style="width: 24.672229%; height: 125px;">The System verifies that the two equipments/unit are geographically close enough to be connected</td><td class="align-left" id="bkmrk-system-2" style="width: 9.296782%; height: 125px;">System</td><td class="align-left" id="bkmrk---update-physical-li-5" style="width: 16.089875%; height: 125px;">- update physical link request to approve</td><td class="align-left" id="bkmrk---yes-%2F-no-3" style="width: 12.515608%; height: 125px;">- yes / no</td><td class="align-left" id="bkmrk-if-the-equipments%2Fun-1" style="width: 31.227652%; height: 125px;">**If the equipments/unit are close enough:** - Go to step 7  
**Else:** - Go to error E.2</td></tr><tr id="bkmrk-7-the-system-marks-t" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-7" style="width: 6.197855%; height: 77px;">**7**</th><td class="align-left" id="bkmrk-the-system-marks-the" style="width: 24.672229%; height: 77px;">The System marks the update as approved and adds the approval date as well as the approver</td><td class="align-left" id="bkmrk-system-3" style="width: 9.296782%; height: 77px;">System</td><td class="align-left" id="bkmrk---update-physical-li-6" style="width: 16.089875%; height: 77px;">- update physical link request to approve</td><td class="align-left" id="bkmrk---approved-update-re" style="width: 12.515608%; height: 77px;">- Approved update request</td><td class="align-left" id="bkmrk--3" style="width: 31.227652%; height: 77px;"></td></tr><tr id="bkmrk-8-the-approver-gets-" style="height: 109px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-8" style="width: 6.197855%; height: 109px;">**8**</th><td class="align-left" id="bkmrk-the-approver-gets-no" style="width: 24.672229%; height: 109px;">The Approver gets notified that the approval was successfully done</td><td class="align-left" id="bkmrk-approver-3" style="width: 9.296782%; height: 109px;">Approver</td><td class="align-left" id="bkmrk---update-request-app" style="width: 16.089875%; height: 109px;">- update request approval confirmation</td><td class="align-left" id="bkmrk--" style="width: 12.515608%; height: 109px;">-</td><td class="align-left" style="width: 31.227652%; height: 109px;">  
</td></tr></tbody></table>

### Secondary Processes

#### S.1. Submitted update physical link request needs adaptations

<table class="simple-table" id="bkmrk-step-description-act-2" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-3"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-1" style="width: 6.197855%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-1" style="width: 24.672229%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-1" style="width: 9.296782%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-1" style="width: 15.852205%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-1" style="width: 13.002441%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-1" style="width: 31.097679%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-approver-verif"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-1" style="width: 6.197855%;">**1**</th><td class="align-left" id="bkmrk-the-approver-verifie-2" style="width: 24.672229%;">The Approver verifies if the update physical link request is partially valid and can be corrected</td><td class="align-left" id="bkmrk-approver-4" style="width: 9.296782%;">Approver</td><td class="align-left" id="bkmrk---update-physical-li-7" style="width: 15.852205%;">- update physical link request</td><td class="align-left" id="bkmrk---yes-%2F-no-4" style="width: 13.002441%;">- yes / no</td><td class="align-left" id="bkmrk-if-the-request-can-b" style="width: 31.097679%;">**If the request can be corrected by the approver:**  
Go to step 2  
**Else:** Go to secondary process S.2.</td></tr><tr id="bkmrk-2-the-approver-corre"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2-1" style="width: 6.197855%;">**2**</th><td class="align-left" id="bkmrk-the-approver-correct" style="width: 24.672229%;">The Approver corrects the submitted update request</td><td class="align-left" id="bkmrk-approver-5" style="width: 9.296782%;">Approver</td><td class="align-left" id="bkmrk---update-physical-li-8" style="width: 15.852205%;">- update physical link request</td><td class="align-left" id="bkmrk---corrected-update-p" style="width: 13.002441%;">- corrected update physical link request</td><td class="align-left" id="bkmrk-go-back-to-main-proc" style="width: 31.097679%;">Go back to main process Step 4</td></tr></tbody></table>

#### S.1. Submitted update is rejected

<table class="simple-table" id="bkmrk-step-description-act-4" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-5"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-2" style="width: 5.959476%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-2" style="width: 24.791418%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-2" style="width: 9.296782%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-2" style="width: 15.971395%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-2" style="width: 13.019893%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-2" style="width: 30.961036%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-approver-rejec"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-2" style="width: 5.959476%;">**1**</th><td class="align-left" id="bkmrk-the-approver-rejects" style="width: 24.791418%;">The Approver rejects the entry</td><td class="align-left" id="bkmrk-approver-6" style="width: 9.296782%;">Approver</td><td class="align-left" id="bkmrk---update-physical-li-9" style="width: 15.971395%;">- update physical link request</td><td class="align-left" id="bkmrk---update-physical-li-10" style="width: 13.019893%;">- update physical link request rejection</td><td class="align-left" id="bkmrk--4" style="width: 30.961036%;"></td></tr><tr id="bkmrk-2-the-system-marks-t"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2-2" style="width: 5.959476%;">**2**</th><td class="align-left" id="bkmrk-the-system-marks-the-1" style="width: 24.791418%;">The System marks the request as rejected and adds the date as well as the approver to the rejected update request</td><td class="align-left" id="bkmrk-system-4" style="width: 9.296782%;">System</td><td class="align-left" id="bkmrk---update-physical-li-11" style="width: 15.971395%;">- update physical link request rejection</td><td class="align-left" id="bkmrk---rejected-update-ph" style="width: 13.019893%;">- rejected update physical link request</td><td class="align-left" id="bkmrk--5" style="width: 30.961036%;"></td></tr><tr id="bkmrk-3-the-approver-gets-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3-1" style="width: 5.959476%;">**3**</th><td class="align-left" id="bkmrk-the-approver-gets-a-" style="width: 24.791418%;">The Approver gets a confirmation that the update request has been rejected</td><td class="align-left" id="bkmrk-approver-7" style="width: 9.296782%;">Approver</td><td class="align-left" id="bkmrk---update-physical-li-12" style="width: 15.971395%;">- update physical link request rejection confirmation</td><td class="align-left" id="bkmrk--6" style="width: 13.019893%;"></td><td class="align-left">  
</td></tr></tbody></table>

### Error Processes

#### E.1. Equipments / unit not found

<table class="simple-table" id="bkmrk-step-description-act-6" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-7"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-3" style="width: 5.959476%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-3" style="width: 24.791418%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-3" style="width: 9.058403%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-3" style="width: 15.613826%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-3" style="width: 13.135677%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-3" style="width: 31.4412%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-system-returns-an-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-3" style="width: 5.959476%;">**1**</th><td class="align-left" id="bkmrk-system-returns-an-er" style="width: 24.791418%;">System returns an error indicating that one or both equipment(s) / unit do not exist</td><td class="align-left" id="bkmrk-system-5" style="width: 9.058403%;">System</td><td class="align-left" id="bkmrk---1" style="width: 15.613826%;">-</td><td class="align-left" id="bkmrk-error%3A-equipments-%2F-" style="width: 13.135677%;">**Error: equipments / unit do not exist**</td><td class="align-left" style="width: 31.4412%;">  
</td></tr></tbody></table>

#### E.2. Equipments / unit out of reach

<table class="simple-table" id="bkmrk-step-description-act-8" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-9"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-4" style="width: 5.840286%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-4" style="width: 24.553039%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-4" style="width: 9.296782%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-4" style="width: 15.613826%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-4" style="width: 13.229752%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-4" style="width: 31.466315%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-system-returns-an--1"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-4" style="width: 5.840286%;">**1**</th><td class="align-left" id="bkmrk-system-returns-an-er-1" style="width: 24.553039%;">System returns an error indicating that the two equipments / unit are not geographically close enough to be connected.</td><td class="align-left" id="bkmrk-system-6" style="width: 9.296782%;">System</td><td class="align-left" id="bkmrk---2" style="width: 15.613826%;">-</td><td class="align-left" id="bkmrk-error%3A-equipments-%2F--1" style="width: 13.229752%;">**Error: equipments / unit not in physical link range**</td><td class="align-left" style="width: 31.466315%;">  
</td></tr></tbody></table>

## Additional Information

### Exceptions

#### \[400 Bad Request\] Invalid input:

If mandatory fields are missing or fields are invalid, the system returns an error message. This includes the case in which one or both equipment(s) / unit do not exist.

#### \[409 Conflict\] Equipments / unit out of reach

If the **Editor** attempts to add physical link between two equipments / unit that are geographically too far away to be connected, the system should return an error.

#### \[500 Internal Server Error\] System Error

If the system fails to save changes due to an internal error, it displays an appropriate message and logs the error for further investigation.

# 7.7. Approve delete site request

[![approve deleted process.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/approve-deleted-process.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/approve-deleted-process.png)

<table class="simple-table" id="bkmrk-name-approve-delete-" style="width: 100%; height: 330px;"><thead class="simple-table-header"><tr id="bkmrk-name-approve-delete--1" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-name" style="width: 21.215733%; height: 29px;">Name</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-approve-delete-site-" style="width: 78.784267%; height: 29px;">Approve delete site request</th></tr></thead><tbody><tr id="bkmrk-purpose-allow-approv" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-purpose" style="width: 21.215733%; height: 29px;">**Purpose**</th><td class="align-left" id="bkmrk-allow-approver-to-va" style="width: 78.784267%; height: 29px;">Allow Approver to validate a site delete request</td></tr><tr id="bkmrk-linked-user-stories-" style="height: 79px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-linked-user-stories" style="width: 21.215733%; height: 79px;">**Linked user stories**</th><td class="align-left" id="bkmrk-4.33.-editor---delet" style="width: 78.784267%; height: 79px;">[4.33. Editor - Delete a site](https://doc.rncv.lu/books/architecture-documentation/page/433-editor-delete-a-site "4.33. Editor - Delete a site")

[4.47. Approver - Approve deleted site request](https://doc.rncv.lu/books/architecture-documentation/page/447-approver-approve-deleted-site-request "4.47. Approver - Approve deleted site request")

[4.52. Organisation Approver - Approve deleted site request for organisation](https://doc.rncv.lu/books/architecture-documentation/page/452-organisation-approver-approve-deleted-site-request-for-organisation "4.52. Organisation Approver - Approve deleted site request for organisation")

</td></tr><tr id="bkmrk-apis-used-put-%2Fsites" style="height: 61px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-apis-used" style="width: 21.215733%; height: 61px;">**APIs used**</th><td class="align-left" id="bkmrk-put-%2Fsites%2F%3Csite-id%3E" style="width: 78.784267%; height: 61px;">**PUT** /sites/&lt;site-id&gt;/approve  
**PUT** /sites/&lt;site-id&gt;/reject  
**PUT** or PATCH /sites/&lt;site-id&gt;</td></tr><tr id="bkmrk-scope-this-process-o" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-scope" style="width: 21.215733%; height: 29px;">**Scope**</th><td class="align-left" id="bkmrk-this-process-only-ha" style="width: 78.784267%; height: 29px;">This process only handles the validation of an already created site deletion request</td></tr><tr id="bkmrk-roles-system%2C-approv" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-roles" style="width: 21.215733%; height: 29px;">**Roles**</th><td class="align-left" id="bkmrk-system%2C-approver-%2F-g" style="width: 78.784267%; height: 29px;">System, Approver / Global Approver</td></tr><tr id="bkmrk-input---id-of-the-si" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input" style="width: 21.215733%; height: 45px;">**Input**</th><td class="align-left" id="bkmrk---id-of-the-site-tha" style="width: 78.784267%; height: 45px;">- id of the site that is marked for deletion  
- optionally the information to amend</td></tr><tr id="bkmrk-output---confirmatio" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output" style="width: 21.215733%; height: 29px;">**Output**</th><td class="align-left" id="bkmrk---confirmation-that-" style="width: 78.784267%; height: 29px;">- confirmation that the update request has been approved/rejected</td></tr></tbody></table>

## Detailed Process description

### Main Process

<table class="simple-table" id="bkmrk-step-description-act" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-1"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step" style="width: 6.078665%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description" style="width: 21.454112%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29" style="width: 9.415971%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29" style="width: 14.183552%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29" style="width: 17.401101%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points" style="width: 31.466599%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-system-sends-o"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1" style="width: 6.078665%;">**1**</th><td class="align-left" id="bkmrk-the-system-sends-out" style="width: 21.454112%;">The System sends out notifications to the Global approvers and organisation approvers, indicating that an approval a pending.</td><td class="align-left" id="bkmrk-system" style="width: 9.415971%;">System</td><td class="align-left" id="bkmrk---outside-trigger-%28e" style="width: 14.183552%;">- Outside trigger (e.g. Editor sent a delete request)</td><td class="align-left" id="bkmrk---notification-to-th" style="width: 17.401101%;">- notification to the Global and organisation Approvers</td><td class="align-left" id="bkmrk--1" style="width: 31.466599%;"></td></tr><tr id="bkmrk-2-the-approver-verif"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2" style="width: 6.078665%;">**2**</th><td class="align-left" id="bkmrk-the-approver-verifie" style="width: 21.454112%;">The Approver verifies if the site can be deleted</td><td class="align-left" id="bkmrk-approver" style="width: 9.415971%;">Approver</td><td class="align-left" id="bkmrk---site-deletion-requ" style="width: 14.183552%;">- Site deletion request</td><td class="align-left" id="bkmrk---yes-%2F-no" style="width: 17.401101%;">- yes / no</td><td class="align-left" id="bkmrk-if-the-site-can-be-d" style="width: 31.466599%;">**If the site can be deleted:** Go to step 3  
**Else:** Go to secondary process S.1</td></tr><tr id="bkmrk-3-the-system-marks-t"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3" style="width: 6.078665%;">**3**</th><td class="align-left" id="bkmrk-the-system-marks-the" style="width: 21.454112%;">The System marks the site with the flag “is\_deleted = true” and adds the information on the date of validation and the user that validated the request</td><td class="align-left" id="bkmrk-system-1" style="width: 9.415971%;">System</td><td class="align-left" id="bkmrk---site-with-flag-%E2%80%9Cma" style="width: 14.183552%;">- site with flag “marked\_for\_deletion = true”</td><td class="align-left" id="bkmrk---site-with-flag-%E2%80%9Cis" style="width: 17.401101%;">- site with flag “is\_deleted = true”  
- approver set to the user that triggered the approval  
- approval date set to the current date</td><td class="align-left" id="bkmrk--2" style="width: 31.466599%;"></td></tr><tr id="bkmrk-4-the-system-sets-al"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4" style="width: 6.078665%;">**4**</th><td class="align-left" id="bkmrk-the-system-sets-all-" style="width: 21.454112%;">The System sets all the objects linked to the site with the flag “is\_deleted = true” (blocks, units, equipments).</td><td class="align-left" id="bkmrk-system-2" style="width: 9.415971%;">System</td><td class="align-left" id="bkmrk---site" style="width: 14.183552%;">- site</td><td class="align-left" id="bkmrk---all-linked-objects" style="width: 17.401101%;">- all linked objects marked with the flag “is\_deleted = true”</td><td class="align-left" id="bkmrk--3" style="width: 31.466599%;"></td></tr><tr id="bkmrk-5-the-system-creates"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-5" style="width: 6.078665%;">**5**</th><td class="align-left" id="bkmrk-the-system-creates-v" style="width: 21.454112%;">The System creates validated update requests with the flag “is\_deleted = true” for each active physical link that are connected to at least one unit of the site.</td><td class="align-left" id="bkmrk-system-3" style="width: 9.415971%;">System</td><td class="align-left" id="bkmrk---site-1" style="width: 14.183552%;">- site</td><td class="align-left" id="bkmrk---new-validated-phys" style="width: 17.401101%;">- new validated physical links with the flag “is\_deleted = true” for each active physical link that links at least one unit of the deleted site</td><td class="align-left" id="bkmrk--4" style="width: 31.466599%;"></td></tr><tr id="bkmrk-6-the-approver-gets-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-6" style="width: 6.078665%;">**6**</th><td class="align-left" id="bkmrk-the-approver-gets-a-" style="width: 21.454112%;">The Approver gets a confirmation that the approval has been applied</td><td class="align-left" id="bkmrk-approver-1" style="width: 9.415971%;">Approver</td><td class="align-left" id="bkmrk---confirmation-of-th" style="width: 14.183552%;">- confirmation of the validation</td><td class="align-left" id="bkmrk--5" style="width: 17.401101%;"></td><td class="align-left" style="width: 31.466599%;">  
</td></tr></tbody></table>

### Secondary Processes

#### S.1. Delete site request rejected

<table class="simple-table" id="bkmrk-step-description-act-2" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-3"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-1" style="width: 5.840286%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-1" style="width: 20.858164%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-1" style="width: 9.415971%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-1" style="width: 15.494636%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-1" style="width: 17.162864%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-1" style="width: 31.228078%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-system-removes"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-1" style="width: 5.840286%;">**1**</th><td class="align-left" id="bkmrk-the-system-removes-t" style="width: 20.858164%;">The System removes the mark\_for\_deletion tag from the site entry</td><td class="align-left" id="bkmrk-system-4" style="width: 9.415971%;">System</td><td class="align-left" id="bkmrk---site-marked-for-de" style="width: 15.494636%;">- site marked for deletion</td><td class="align-left" id="bkmrk---site-with-the-flag" style="width: 17.162864%;">- site with the flag “mark\_for\_deletion = false”</td><td class="align-left" id="bkmrk--6" style="width: 31.228078%;"></td></tr><tr id="bkmrk-2-the-approver-gets-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2-1" style="width: 5.840286%;">**2**</th><td class="align-left" id="bkmrk-the-approver-gets-a--1" style="width: 20.858164%;">The Approver gets a confirmation that the deletion rejection has been applied</td><td class="align-left" id="bkmrk-approver-2" style="width: 9.415971%;">Approver</td><td class="align-left" id="bkmrk---deletion-request-r" style="width: 15.494636%;">- deletion request rejection confirmation</td><td class="align-left" id="bkmrk--7" style="width: 17.162864%;"></td><td class="align-left" style="width: 31.228078%;">  
</td></tr></tbody></table>

### Exceptions

#### \[400 Bad Request\] Invalid input:

If mandatory fields are missing or invalid, the system returns an error message. If some addresses do not exist in the system, this is also considered as a bad request.

#### \[404 Not Found\] Site not found

Error returned by the system if the site is not found.

#### \[409 Conflict\] Site not marked for deletion

Error returned by the system if the site being validated is not marked for deletion.

#### \[500 Internal Server Error\] System Error

If the system fails to save changes due to an internal error, it displays an appropriate message and logs the error for further investigation.

# 7.8. Approve delete block request

[![Approve delete block request.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/approve-delete-block-request.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/approve-delete-block-request.png)

<table class="simple-table" id="bkmrk-name-approve-delete-" style="width: 99.642857%; height: 324px;"><thead class="simple-table-header"><tr id="bkmrk-name-approve-delete--1" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-name" style="width: 19.828816%; height: 29px;">Name</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-approve-delete-block" style="width: 80.171184%; height: 29px;">Approve delete block request</th></tr></thead><tbody><tr id="bkmrk-purpose-allow-approv" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-purpose" style="width: 19.828816%; height: 29px;">**Purpose**</th><td class="align-left" id="bkmrk-allow-approver-to-va" style="width: 80.171184%; height: 29px;">Allow Approver to validate a block delete request</td></tr><tr id="bkmrk-linked-user-stories-" style="height: 57px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-linked-user-stories" style="width: 19.828816%; height: 57px;">**Linked user stories**</th><td class="align-left" id="bkmrk-3.36.-editor---delet" style="width: 80.171184%; height: 57px;">[3.36. Editor - Delete a block](https://doc.rncv.lu/books/architecture-documentation/page/336-editor-delete-a-block "3.36. Editor - Delete a block")

[4.48. Approver - Approve deleted block request](https://doc.rncv.lu/books/architecture-documentation/page/448-approver-approve-deleted-block-request "4.48. Approver - Approve deleted block request")

[4.53. Organisation Approver - Approve deleted block request for organisation](https://doc.rncv.lu/books/architecture-documentation/page/453-organisation-approver-approve-deleted-block-request-for-organisation "4.53. Organisation Approver - Approve deleted block request for organisation")

</td></tr><tr id="bkmrk-apis-used-put-%2Fblock" style="height: 61px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-apis-used" style="width: 19.828816%; height: 61px;">**APIs used**</th><td class="align-left" id="bkmrk-put-%2Fblocks%2F%3Cblock-i" style="width: 80.171184%; height: 61px;">**PUT** /blocks/&lt;block-id&gt;/approve  
**PUT** /blocks/&lt;block-id&gt;/reject  
**PUT** or **PATCH** /blocks/&lt;block-id&gt;</td></tr><tr id="bkmrk-scope-this-process-o" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-scope" style="width: 19.828816%; height: 45px;">**Scope**</th><td class="align-left" id="bkmrk-this-process-only-ha" style="width: 80.171184%; height: 45px;">This process only handles the validation of an already created block deletion request</td></tr><tr id="bkmrk-roles-system%2C-approv" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-roles" style="width: 19.828816%; height: 29px;">**Roles**</th><td class="align-left" id="bkmrk-system%2C-approver-%2F-g" style="width: 80.171184%; height: 29px;">System, Approver / Global Approver</td></tr><tr id="bkmrk-input---id-of-the-bl" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input" style="width: 19.828816%; height: 45px;">**Input**</th><td class="align-left" id="bkmrk---id-of-the-block-th" style="width: 80.171184%; height: 45px;">- id of the block that is marked for deletion  
- optionally the information to amend</td></tr><tr id="bkmrk-output---confirmatio" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output" style="width: 19.828816%; height: 29px;">**Output**</th><td class="align-left" id="bkmrk---confirmation-that-" style="width: 80.171184%; height: 29px;">- confirmation that the update request has been approved/rejected</td></tr></tbody></table>

## Detailed Process description

### Main Process

<table class="simple-table" id="bkmrk-step-description-act" style="width: 100%; height: 661px;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-1" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step" style="width: 5.721097%; height: 29px;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description" style="width: 21.334923%; height: 29px;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29" style="width: 9.65435%; height: 29px;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29" style="width: 15.613826%; height: 29px;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29" style="width: 21.334355%; height: 29px;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points" style="width: 26.34145%; height: 29px;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-system-sends-o" style="height: 109px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1" style="width: 5.721097%; height: 109px;">**1**</th><td class="align-left" id="bkmrk-the-system-sends-out" style="width: 21.334923%; height: 109px;">The System sends out notifications to the Global approvers and organisation approvers, indicating that an approval a pending.</td><td class="align-left" id="bkmrk-system" style="width: 9.65435%; height: 109px;">System</td><td class="align-left" id="bkmrk---outside-trigger-%28e" style="width: 15.613826%; height: 109px;">- Outside trigger (e.g. Editor sent a delete request)</td><td class="align-left" id="bkmrk---notification-to-th" style="width: 21.334355%; height: 109px;">- notification to the Global and organisation Approvers</td><td class="align-left" id="bkmrk--1" style="width: 26.34145%; height: 109px;"></td></tr><tr id="bkmrk-2-the-approver-verif" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2" style="width: 5.721097%; height: 77px;">**2**</th><td class="align-left" id="bkmrk-the-approver-verifie" style="width: 21.334923%; height: 77px;">The Approver verifies if the block can be deleted</td><td class="align-left" id="bkmrk-approver" style="width: 9.65435%; height: 77px;">Approver</td><td class="align-left" id="bkmrk---block-deletion-req" style="width: 15.613826%; height: 77px;">- Block deletion request</td><td class="align-left" id="bkmrk---yes-%2F-no" style="width: 21.334355%; height: 77px;">- yes / no</td><td class="align-left" id="bkmrk-if-the-site-can-be-d" style="width: 26.34145%; height: 77px;">**If the site can be deleted:** Go to step 3  
**Else:** Go to secondary process S.1</td></tr><tr id="bkmrk-3-the-system-verifie" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3" style="width: 5.721097%; height: 77px;">**3**</th><td class="align-left" id="bkmrk-the-system-verifies-" style="width: 21.334923%; height: 77px;">The System verifies if the site has other blocks than the one being deleted</td><td class="align-left" id="bkmrk-system-1" style="width: 9.65435%; height: 77px;">System</td><td class="align-left" id="bkmrk---block-to-be-delete" style="width: 15.613826%; height: 77px;">- Block to be deleted</td><td class="align-left" id="bkmrk---yes-%2F-no-1" style="width: 21.334355%; height: 77px;">- yes / no</td><td class="align-left" id="bkmrk-if-the-site-has-more" style="width: 26.34145%; height: 77px;">**If the site has more blocks:** Go to step 4  
**Else:** Go to E.1</td></tr><tr id="bkmrk-4-the-system-marks-t" style="height: 125px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4" style="width: 5.721097%; height: 125px;">**4**</th><td class="align-left" id="bkmrk-the-system-marks-the" style="width: 21.334923%; height: 125px;">The System marks the block with the flag “is\_deleted = true” and adds the information on the date of validation and the user that validated the request</td><td class="align-left" id="bkmrk-system-2" style="width: 9.65435%; height: 125px;">System</td><td class="align-left" id="bkmrk---block-with-flag-%E2%80%9Cm" style="width: 15.613826%; height: 125px;">- block with flag “marked\_for\_deletion = true”</td><td class="align-left" id="bkmrk---block-with-flag-%E2%80%9Ci" style="width: 21.334355%; height: 125px;">- block with flag “is\_deleted = true”  
- approver set to the user that triggered the approval  
- approval date set to the current date</td><td class="align-left" id="bkmrk--2" style="width: 26.34145%; height: 125px;"></td></tr><tr id="bkmrk-4-the-system-sets-al" style="height: 93px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4-1" style="width: 5.721097%; height: 93px;">**4**</th><td class="align-left" id="bkmrk-the-system-sets-all-" style="width: 21.334923%; height: 93px;">The System sets all the objects linked to the block with the flag “is\_deleted = true” (units, equipments).</td><td class="align-left" id="bkmrk-system-3" style="width: 9.65435%; height: 93px;">System</td><td class="align-left" id="bkmrk---block" style="width: 15.613826%; height: 93px;">- block</td><td class="align-left" id="bkmrk---all-linked-objects" style="width: 21.334355%; height: 93px;">- all linked objects marked with the flag “is\_deleted = true”</td><td class="align-left" id="bkmrk--3" style="width: 26.34145%; height: 93px;"></td></tr><tr id="bkmrk-5-the-system-creates" style="height: 141px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-5" style="width: 5.721097%; height: 141px;">**5**</th><td class="align-left" id="bkmrk-the-system-creates-v" style="width: 21.334923%; height: 141px;">The System creates validated update requests with the flag “is\_deleted = true” for each active physical link that are connected to at least one unit of the block.</td><td class="align-left" id="bkmrk-system-4" style="width: 9.65435%; height: 141px;">System</td><td class="align-left" id="bkmrk---block-1" style="width: 15.613826%; height: 141px;">- block</td><td class="align-left" id="bkmrk---new-validated-phys" style="width: 21.334355%; height: 141px;">- new validated physical links with the flag “is\_deleted = true” for each active physical link that links at least one unit of the deleted block</td><td class="align-left" id="bkmrk--4" style="width: 26.34145%; height: 141px;"></td></tr><tr id="bkmrk-6-the-approver-gets-" style="height: 10px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-6" style="width: 5.721097%; height: 10px;">**6**</th><td class="align-left" id="bkmrk-the-approver-gets-a-" style="width: 21.334923%; height: 10px;">The Approver gets a confirmation that the approval has been applied</td><td class="align-left" id="bkmrk-approver-1" style="width: 9.65435%; height: 10px;">Approver</td><td class="align-left" id="bkmrk---confirmation-of-th" style="width: 15.613826%; height: 10px;">- confirmation of the validation</td><td class="align-left" id="bkmrk--5" style="width: 21.334355%; height: 10px;"></td><td class="align-left" style="width: 26.34145%; height: 10px;">  
</td></tr></tbody></table>

### Secondary Processes

#### S.1. Delete block request rejected

<table class="simple-table" id="bkmrk-step-description-act-2" style="width: 100%; height: 212px;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-3" style="height: 77px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-1" style="width: 6.078665%; height: 77px;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-1" style="width: 20.500596%; height: 77px;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-1" style="width: 9.892729%; height: 77px;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-1" style="width: 15.733015%; height: 77px;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-1" style="width: 20.760826%; height: 77px;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-1" style="width: 27.034168%; height: 77px;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-system-removes" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-1" style="width: 6.078665%; height: 45px;">**1**</th><td class="align-left" id="bkmrk-the-system-removes-t" style="width: 20.500596%; height: 45px;">The System removes the mark\_for\_deletion tag from the block entry</td><td class="align-left" id="bkmrk-system-5" style="width: 9.892729%; height: 45px;">System</td><td class="align-left" id="bkmrk---block-marked-for-d" style="width: 15.733015%; height: 45px;">- block marked for deletion</td><td class="align-left" id="bkmrk---block-with-the-fla" style="width: 20.760826%; height: 45px;">- block with the flag “mark\_for\_deletion = false”</td><td class="align-left" id="bkmrk--6" style="width: 27.034168%; height: 45px;"></td></tr><tr id="bkmrk-2-the-approver-gets-" style="height: 61px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2-1" style="width: 6.078665%; height: 61px;">**2**</th><td class="align-left" id="bkmrk-the-approver-gets-a--1" style="width: 20.500596%; height: 61px;">The Approver gets a confirmation that the deletion rejection has been applied</td><td class="align-left" id="bkmrk-approver-2" style="width: 9.892729%; height: 61px;">Approver</td><td class="align-left" id="bkmrk---deletion-request-r" style="width: 15.733015%; height: 61px;">- deletion request rejection confirmation</td><td class="align-left" id="bkmrk--7" style="width: 20.760826%; height: 61px;"></td><td class="align-left" style="width: 27.034168%; height: 61px;">  
</td></tr></tbody></table>

### Error Processes

#### E.1. Last block can’t be deleted

<table class="simple-table" id="bkmrk-step-description-act-4" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-5"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-2" style="width: 5.959476%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-2" style="width: 20.143027%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-2" style="width: 10.369487%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-2" style="width: 15.852205%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-2" style="width: 20.520177%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-2" style="width: 27.155627%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-approver-gets-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-2" style="width: 5.959476%;">**1**</th><td class="align-left" id="bkmrk-the-approver-gets-an" style="width: 20.143027%;">The Approver gets an error indicating that the last block of a site cannot be deleted</td><td class="align-left" id="bkmrk-system-6" style="width: 10.369487%;">System</td><td class="align-left" id="bkmrk---error%3A-last-block-" style="width: 15.852205%;">- Error: last block can’t be deleted</td><td class="align-left" id="bkmrk--8" style="width: 20.520177%;"></td><td class="align-left">  
</td></tr></tbody></table>

### Exceptions

#### \[400 Bad Request\] Invalid input:

If mandatory fields are missing or invalid, the system returns an error message. If some addresses do not exist in the system, this is also considered as a bad request.

#### \[404 Not Found\] Block not found

Error returned by the system if the block is not found.

#### \[409 Conflict\] Block not marked for deletion

Error returned by the system if the block being validated is not marked for deletion.

#### \[500 Internal Server Error\] System Error

If the system fails to save changes due to an internal error, it displays an appropriate message and logs the error for further investigation.

# 7.9. Approve delete unit request

[![Approve delete unit request.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/approve-delete-unit-request.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/approve-delete-unit-request.png)

<table class="simple-table" id="bkmrk-name-approve-delete-" style="width: 99.52381%; height: 308px;"><thead class="simple-table-header"><tr id="bkmrk-name-approve-delete--1" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-name" style="width: 20.115774%; height: 29px;">Name</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-approve-delete-unit-" style="width: 79.884226%; height: 29px;">Approve delete unit request</th></tr></thead><tbody><tr id="bkmrk-purpose-allow-approv" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-purpose" style="width: 20.115774%; height: 29px;">**Purpose**</th><td class="align-left" id="bkmrk-allow-approver-to-va" style="width: 79.884226%; height: 29px;">Allow Approver to validate a unit delete request</td></tr><tr id="bkmrk-linked-user-stories-" style="height: 57px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-linked-user-stories" style="width: 20.115774%; height: 57px;">**Linked user stories**</th><td class="align-left" id="bkmrk-4.39.-editor---delet" style="width: 79.884226%; height: 57px;">[4.39. Editor - Delete a unit](https://doc.rncv.lu/books/architecture-documentation/page/439-editor-delete-a-unit "4.39. Editor - Delete a unit")

[4.49. Approver - Approve deleted unit request](https://doc.rncv.lu/books/architecture-documentation/page/449-approver-approve-deleted-unit-request "4.49. Approver - Approve deleted unit request")

[4.54. Organisation Approver - Approve deleted unit request for organisation](https://doc.rncv.lu/books/architecture-documentation/page/454-organisation-approver-approve-deleted-unit-request-for-organisation "4.54. Organisation Approver - Approve deleted unit request for organisation")

</td></tr><tr id="bkmrk-apis-used-put-%2Funits" style="height: 61px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-apis-used" style="width: 20.115774%; height: 61px;">**APIs used**</th><td class="align-left" id="bkmrk-put-%2Funits%2F%3Cunit-id%3E" style="width: 79.884226%; height: 61px;">**PUT** /units/&lt;unit-id&gt;/approve  
**PUT** /units/&lt;unit-id&gt;/reject  
**PUT** or **PATCH** /units/&lt;unit-id&gt;</td></tr><tr id="bkmrk-scope-this-process-o" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-scope" style="width: 20.115774%; height: 29px;">**Scope**</th><td class="align-left" id="bkmrk-this-process-only-ha" style="width: 79.884226%; height: 29px;">This process only handles the validation of an already created unit deletion request</td></tr><tr id="bkmrk-roles-system%2C-approv" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-roles" style="width: 20.115774%; height: 29px;">**Roles**</th><td class="align-left" id="bkmrk-system%2C-approver-%2F-g" style="width: 79.884226%; height: 29px;">System, Approver / Global Approver</td></tr><tr id="bkmrk-input---id-of-the-un" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input" style="width: 20.115774%; height: 45px;">**Input**</th><td class="align-left" id="bkmrk---id-of-the-unit-tha" style="width: 79.884226%; height: 45px;">- id of the unit that is marked for deletion  
- optionally the information to amend</td></tr><tr id="bkmrk-output---confirmatio" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output" style="width: 20.115774%; height: 29px;">**Output**</th><td class="align-left" id="bkmrk---confirmation-that-" style="width: 79.884226%; height: 29px;">- confirmation that the update request has been approved/rejected</td></tr></tbody></table>

## Detailed Process description

### Main Process

<table class="simple-table" id="bkmrk-step-description-act" style="width: 100%; height: 764px;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-1" style="height: 125px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step" style="width: 5.959476%; height: 125px;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description" style="width: 21.215733%; height: 125px;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29" style="width: 9.296782%; height: 125px;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29" style="width: 14.064362%; height: 125px;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29" style="width: 17.758812%; height: 125px;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points" style="width: 31.704836%; height: 125px;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-system-sends-o" style="height: 109px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1" style="width: 5.959476%; height: 109px;">**1**</th><td class="align-left" id="bkmrk-the-system-sends-out" style="width: 21.215733%; height: 109px;">The System sends out notifications to the Global approvers and organisation approvers, indicating that an approval a pending.</td><td class="align-left" id="bkmrk-system" style="width: 9.296782%; height: 109px;">System</td><td class="align-left" id="bkmrk---outside-trigger-%28e" style="width: 14.064362%; height: 109px;">- Outside trigger (e.g. Editor sent a delete request)</td><td class="align-left" id="bkmrk---notification-to-th" style="width: 17.758812%; height: 109px;">- notification to the Global and organisation Approvers</td><td class="align-left" id="bkmrk--1" style="width: 31.704836%; height: 109px;"></td></tr><tr id="bkmrk-2-the-approver-verif" style="height: 86px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2" style="width: 5.959476%; height: 86px;">**2**</th><td class="align-left" id="bkmrk-the-approver-verifie" style="width: 21.215733%; height: 86px;">The Approver verifies if the unit can be deleted</td><td class="align-left" id="bkmrk-approver" style="width: 9.296782%; height: 86px;">Approver</td><td class="align-left" id="bkmrk---unit-deletion-requ" style="width: 14.064362%; height: 86px;">- unit deletion request</td><td class="align-left" id="bkmrk---yes-%2F-no" style="width: 17.758812%; height: 86px;">- yes / no</td><td class="align-left" id="bkmrk-if-the-unit-can-be-d" style="width: 31.704836%; height: 86px;">**If the unit can be deleted:** Go to step 3  
**Else:** Go to secondary process S.1</td></tr><tr id="bkmrk-3-the-system-marks-t" style="height: 141px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3" style="width: 5.959476%; height: 141px;">**3**</th><td class="align-left" id="bkmrk-the-system-marks-the" style="width: 21.215733%; height: 141px;">The System marks the unit with the flag “is\_deleted = true” and adds the information on the date of validation and the user that validated the request</td><td class="align-left" id="bkmrk-system-1" style="width: 9.296782%; height: 141px;">System</td><td class="align-left" id="bkmrk---unit-with-flag-%E2%80%9Cma" style="width: 14.064362%; height: 141px;">- unit with flag “marked\_for\_deletion = true”</td><td class="align-left" id="bkmrk---unit-with-flag-%E2%80%9Cis" style="width: 17.758812%; height: 141px;">- unit with flag “is\_deleted = true”  
- approver set to the user that triggered the approval  
- approval date set to the current date</td><td class="align-left" id="bkmrk--2" style="width: 31.704836%; height: 141px;"></td></tr><tr id="bkmrk-4-the-system-sets-al" style="height: 93px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4" style="width: 5.959476%; height: 93px;">**4**</th><td class="align-left" id="bkmrk-the-system-sets-all-" style="width: 21.215733%; height: 93px;">The System sets all the quipments linked to the site with the flag “is\_deleted = true”.</td><td class="align-left" id="bkmrk-system-2" style="width: 9.296782%; height: 93px;">System</td><td class="align-left" id="bkmrk---unit" style="width: 14.064362%; height: 93px;">- unit</td><td class="align-left" id="bkmrk---all-linked-equipme" style="width: 17.758812%; height: 93px;">- all linked equipments marked with the flag “is\_deleted = true”</td><td class="align-left" id="bkmrk--3" style="width: 31.704836%; height: 93px;"></td></tr><tr id="bkmrk-5-the-system-creates" style="height: 125px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-5" style="width: 5.959476%; height: 125px;">**5**</th><td class="align-left" id="bkmrk-the-system-creates-v" style="width: 21.215733%; height: 125px;">The System creates validated update requests with the flag “is\_deleted = true” for each active physical link that are linked to the deleted equipments</td><td class="align-left" id="bkmrk-system-3" style="width: 9.296782%; height: 125px;">System</td><td class="align-left" id="bkmrk---unit-1" style="width: 14.064362%; height: 125px;">- unit</td><td class="align-left" id="bkmrk---new-validated-phys" style="width: 17.758812%; height: 125px;">- new validated physical links with the flag “is\_deleted = true” for each active physical link that is linked to the deleted equipments</td><td class="align-left" id="bkmrk--4" style="width: 31.704836%; height: 125px;"></td></tr><tr id="bkmrk-6-the-approver-gets-" style="height: 85px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-6" style="width: 5.959476%; height: 85px;">**6**</th><td class="align-left" id="bkmrk-the-approver-gets-a-" style="width: 21.215733%; height: 85px;">The Approver gets a confirmation that the approval has been applied</td><td class="align-left" id="bkmrk-approver-1" style="width: 9.296782%; height: 85px;">Approver</td><td class="align-left" id="bkmrk---confirmation-of-th" style="width: 14.064362%; height: 85px;">- confirmation of the validation</td><td class="align-left" id="bkmrk--5" style="width: 17.758812%; height: 85px;">  
</td><td class="align-left" style="width: 31.704836%; height: 85px;">  
</td></tr></tbody></table>

### Secondary Processes

#### S.1. Delete unit request rejected

<table class="simple-table" id="bkmrk-step-description-act-2" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-3"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-1" style="width: 5.721097%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-1" style="width: 21.811681%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-1" style="width: 9.535161%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-1" style="width: 13.349225%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-1" style="width: 17.548527%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-1" style="width: 32.03431%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-system-removes"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-1" style="width: 5.721097%;">**1**</th><td class="align-left" id="bkmrk-the-system-removes-t" style="width: 21.811681%;">The System removes the mark\_for\_deletion tag from the unit entry</td><td class="align-left" id="bkmrk-system-4" style="width: 9.535161%;">System</td><td class="align-left" id="bkmrk---unit-marked-for-de" style="width: 13.349225%;">- unit marked for deletion</td><td class="align-left" id="bkmrk---unit-with-the-flag" style="width: 17.548527%;">- unit with the flag “mark\_for\_deletion = false”</td><td class="align-left" id="bkmrk--6" style="width: 32.03431%;"></td></tr><tr id="bkmrk-2-the-approver-gets-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2-1" style="width: 5.721097%;">**2**</th><td class="align-left" id="bkmrk-the-approver-gets-a--1" style="width: 21.811681%;">The Approver gets a confirmation that the deletion rejection has been applied</td><td class="align-left" id="bkmrk-approver-2" style="width: 9.535161%;">Approver</td><td class="align-left" id="bkmrk---deletion-request-r" style="width: 13.349225%;">- deletion request rejection confirmation</td><td class="align-left" id="bkmrk--7" style="width: 17.548527%;"></td><td class="align-left" style="width: 32.03431%;">  
</td></tr></tbody></table>

### Exceptions

#### \[400 Bad Request\] Invalid input:

If mandatory fields are missing or invalid, the system returns an error message. If some addresses do not exist in the system, this is also considered as a bad request.

#### \[404 Not Found\] Unit not found

Error returned by the system if the unit is not found.

#### \[409 Conflict\] Unit not marked for deletion

Error returned by the system if the unit being validated is not marked for deletion.

#### \[500 Internal Server Error\] System Error

If the system fails to save changes due to an internal error, it displays an appropriate message and logs the error for further investigation.

# 7.10. Approve delete equipment request

[![Approve delete equipment request.png](https://doc.rncv.lu/uploads/images/gallery/2025-10/scaled-1680-/approve-delete-equipment-request.png)](https://doc.rncv.lu/uploads/images/gallery/2025-10/approve-delete-equipment-request.png)

<table class="simple-table" id="bkmrk-name-approve-delete-" style="width: 99.404762%; height: 297px;"><thead class="simple-table-header"><tr id="bkmrk-name-approve-delete--1" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-name" style="width: 19.892473%; height: 29px;">Name</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-approve-delete-equip" style="width: 80.107527%; height: 29px;">Approve delete equipment request</th></tr></thead><tbody><tr id="bkmrk-purpose-allow-approv" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-purpose" style="width: 19.892473%; height: 29px;">**Purpose**</th><td class="align-left" id="bkmrk-allow-approver-to-va" style="width: 80.107527%; height: 29px;">Allow Approver to validate an equipment delete request</td></tr><tr id="bkmrk-linked-user-stories-" style="height: 57px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-linked-user-stories" style="width: 19.892473%; height: 57px;">**Linked user stories**</th><td class="align-left" id="bkmrk-4.42.-editor---delet" style="width: 80.107527%; height: 57px;">[4.42. Editor - Delete an equipment](https://doc.rncv.lu/books/architecture-documentation/page/442-editor-delete-an-equipment "4.42. Editor - Delete an equipment")

[4.50. Approver - Approve deleted equipment request](https://doc.rncv.lu/books/architecture-documentation/page/450-approver-approve-deleted-equipment-request "4.50. Approver - Approve deleted equipment request")

[4.55. Organisation Approver - Approve delete equipment request for organisation](https://doc.rncv.lu/books/architecture-documentation/page/455-organisation-approver-approve-delete-equipment-request-for-organisation "4.55. Organisation Approver - Approve delete equipment request for organisation")

</td></tr><tr id="bkmrk-apis-used-put-%2Fequip" style="height: 61px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-apis-used" style="width: 19.892473%; height: 61px;">**APIs used**</th><td class="align-left" id="bkmrk-put-%2Fequipments%2F%3Cequ" style="width: 80.107527%; height: 61px;">**PUT** /equipments/&lt;equipment-id&gt;/approve  
**PUT** /equipments/&lt;equipment-id&gt;/reject  
**PUT** or **PATCH** /equipments/&lt;equipment-id&gt;</td></tr><tr id="bkmrk-scope-this-process-o" style="height: 18px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-scope" style="width: 19.892473%; height: 18px;">**Scope**</th><td class="align-left" id="bkmrk-this-process-only-ha" style="width: 80.107527%; height: 18px;">This process only handles the validation of an already created equipment deletion request</td></tr><tr id="bkmrk-roles-system%2C-approv" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-roles" style="width: 19.892473%; height: 29px;">**Roles**</th><td class="align-left" id="bkmrk-system%2C-approver-%2F-g" style="width: 80.107527%; height: 29px;">System, Approver / Global Approver</td></tr><tr id="bkmrk-input---id-of-the-un" style="height: 45px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input" style="width: 19.892473%; height: 45px;">**Input**</th><td class="align-left" id="bkmrk---id-of-the-unit-tha" style="width: 80.107527%; height: 45px;">- id of the unit that is marked for deletion  
- optionally the information to amend</td></tr><tr id="bkmrk-output---confirmatio" style="height: 29px;"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output" style="width: 19.892473%; height: 29px;">**Output**</th><td class="align-left" id="bkmrk---confirmation-that-" style="width: 80.107527%; height: 29px;">- confirmation that the update request has been approved/rejected</td></tr></tbody></table>

## Detailed Process description

### Main Process

<table class="simple-table" id="bkmrk-step-description-act" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-1"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step" style="width: 6.197855%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description" style="width: 21.334923%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29" style="width: 9.177592%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29" style="width: 16.328963%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29" style="width: 17.520574%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points" style="width: 29.440093%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-system-sends-o"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1" style="width: 6.197855%;">**1**</th><td class="align-left" id="bkmrk-the-system-sends-out" style="width: 21.334923%;">The System sends out notifications to the Global approvers and organisation approvers, indicating that an approval a pending.</td><td class="align-left" id="bkmrk-system" style="width: 9.177592%;">System</td><td class="align-left" id="bkmrk---outside-trigger-%28e" style="width: 16.328963%;">- Outside trigger (e.g. Editor sent a delete request)</td><td class="align-left" id="bkmrk---notification-to-th" style="width: 17.520574%;">- notification to the Global and organisation Approvers</td><td class="align-left" id="bkmrk--1" style="width: 29.440093%;"></td></tr><tr id="bkmrk-2-the-approver-verif"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2" style="width: 6.197855%;">**2**</th><td class="align-left" id="bkmrk-the-approver-verifie" style="width: 21.334923%;">The Approver verifies if the equipment can be deleted</td><td class="align-left" id="bkmrk-approver" style="width: 9.177592%;">Approver</td><td class="align-left" id="bkmrk---equipment-deletion" style="width: 16.328963%;">- equipment deletion request</td><td class="align-left" id="bkmrk---yes-%2F-no" style="width: 17.520574%;">- yes / no</td><td class="align-left" id="bkmrk-if-the-equipment-can" style="width: 29.440093%;">**If the equipment can be deleted:** Go to step 3  
**Else:** Go to secondary process S.1</td></tr><tr id="bkmrk-3-the-system-marks-t"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-3" style="width: 6.197855%;">**3**</th><td class="align-left" id="bkmrk-the-system-marks-the" style="width: 21.334923%;">The System marks the equipment with the flag “is\_deleted = true” and adds the information on the date of validation and the user that validated the request</td><td class="align-left" id="bkmrk-system-1" style="width: 9.177592%;">System</td><td class="align-left" id="bkmrk---equipment-with-fla" style="width: 16.328963%;">- equipment with flag “marked\_for\_deletion = true”</td><td class="align-left" id="bkmrk---equipment-with-fla-1" style="width: 17.520574%;">- equipment with flag “is\_deleted = true”  
- approver set to the user that triggered the approval  
- approval date set to the current date</td><td class="align-left" id="bkmrk--2" style="width: 29.440093%;"></td></tr><tr id="bkmrk-4-the-system-creates"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-4" style="width: 6.197855%;">**4**</th><td class="align-left" id="bkmrk-the-system-creates-v" style="width: 21.334923%;">The System creates validated update requests with the flag “is\_deleted = true” for each active physical link that are linked to the deleted equipments</td><td class="align-left" id="bkmrk-system-2" style="width: 9.177592%;">System</td><td class="align-left" id="bkmrk---unit" style="width: 16.328963%;">- unit</td><td class="align-left" id="bkmrk---new-validated-phys" style="width: 17.520574%;">- new validated physical links with the flag “is\_deleted = true” for each active physical link that is linked to the deleted equipments</td><td class="align-left" id="bkmrk--3" style="width: 29.440093%;"></td></tr><tr id="bkmrk-5-the-approver-gets-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-5" style="width: 6.197855%;">**5**</th><td class="align-left" id="bkmrk-the-approver-gets-a-" style="width: 21.334923%;">The Approver gets a confirmation that the approval has been applied</td><td class="align-left" id="bkmrk-approver-1" style="width: 9.177592%;">Approver</td><td class="align-left" id="bkmrk---confirmation-of-th" style="width: 16.328963%;">- confirmation of the validation</td><td class="align-left" id="bkmrk--4" style="width: 17.520574%;"></td><td class="align-left" style="width: 29.440093%;">  
</td></tr></tbody></table>

### Secondary Processes

#### S.1. Delete equipment request rejected

<table class="simple-table" id="bkmrk-step-description-act-2" style="width: 100%;"><thead class="simple-table-header"><tr id="bkmrk-step-description-act-3"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-step-1" style="width: 5.959476%;">Step</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-description-1" style="width: 21.573302%;">Description</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-actor%28s%29-1" style="width: 9.177592%;">Actor(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-input%28s%29-1" style="width: 16.209774%;">Input(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-output%28s%29-1" style="width: 17.665021%;">Output(s)</th><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-decision-points-1" style="width: 29.414836%;">Decision points</th></tr></thead><tbody><tr id="bkmrk-1-the-system-removes"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-1-1" style="width: 5.959476%;">**1**</th><td class="align-left" id="bkmrk-the-system-removes-t" style="width: 21.573302%;">The System removes the mark\_for\_deletion tag from the equipment entry</td><td class="align-left" id="bkmrk-system-3" style="width: 9.177592%;">System</td><td class="align-left" id="bkmrk---equipment-marked-f" style="width: 16.209774%;">- equipment marked for deletion</td><td class="align-left" id="bkmrk---equipment-with-the" style="width: 17.665021%;">- equipment with the flag “mark\_for\_deletion = false”</td><td class="align-left" id="bkmrk--5" style="width: 29.414836%;"></td></tr><tr id="bkmrk-2-the-approver-gets-"><th class="simple-table-header-color simple-table-header align-left" id="bkmrk-2-1" style="width: 5.959476%;">**2**</th><td class="align-left" id="bkmrk-the-approver-gets-a--1" style="width: 21.573302%;">The Approver gets a confirmation that the deletion rejection has been applied</td><td class="align-left" id="bkmrk-approver-2" style="width: 9.177592%;">Approver</td><td class="align-left" id="bkmrk---deletion-request-r" style="width: 16.209774%;">- deletion request rejection confirmation</td><td class="align-left" id="bkmrk--6" style="width: 17.665021%;"></td><td class="align-left" style="width: 29.414836%;">  
</td></tr></tbody></table>

### Exceptions

#### \[400 Bad Request\] Invalid input:

If mandatory fields are missing or invalid, the system returns an error message.

#### \[404 Not Found\] Equipment not found

Error returned by the system if the given equipment does not exist.

#### \[500 Internal Server Error\] System Error

If the system fails to save changes due to an internal error, it displays an appropriate message and logs the error for further investigation.