Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions docs/features/applications-in-use.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<!--
- SPDX-FileCopyrightText: 2026 Conduction B.V. <info@conduction.nl>
- SPDX-License-Identifier: EUPL-1.2
-->

# Applications in use

An application in use records that your organisation uses an application: which version it runs, where it stands in its lifecycle, and who owns it on the business side and on the technical side. The portfolio views, the lifecycle roadmap and the end-of-support warnings all start from these records.

Specification: [`openspec/specs/application-usage-pages/spec.md`](https://github.com/ConductionNL/stackiq/blob/development/openspec/specs/application-usage-pages/spec.md).

## Adding an application to your landscape

Open the application's page under **Applications** and click **Add to our landscape** in the usages section. The application is already filled in. Pick:

- **Consumer**: your organisation.
- **Version**: the version you run. The list only offers versions of this application.
- **Status**: Acquisition, Planned, In production, To be phased out or Phased out.
- **Business owner** and **Technical owner**: contact persons of your organisation.

## Browsing what you use

Open **Applications** in the navigation menu, then **Applications in use**. The list shows each application with its version, status, owners and TIME classification. The tabs above the list filter on status. Your organisation's page lists the same records under **Applications in use**.

## Moving through the lifecycle

Open an application in use. The actions at the top follow its status:

- **Plan** moves Acquisition to Planned.
- **Go live** moves Planned to In production.
- **Phase out** moves In production to To be phased out.
- **Retire** moves To be phased out to Phased out.

Every change is kept in the **History** tab.

## Who sees the owners

The owners are contact persons of the organisation that uses the application. A supplier can read the usages of its own products, but it cannot open the contact persons of its customers.
12 changes: 11 additions & 1 deletion l10n/en.js
Original file line number Diff line number Diff line change
Expand Up @@ -818,7 +818,17 @@ OC.L10N.register(
"High risk without FRIA": "High risk without FRIA",
"Application and supplier": "Application and supplier",
"History": "History",
"No AI systems registered for this application": "No AI systems registered for this application"
"No AI systems registered for this application": "No AI systems registered for this application",
"Application in use": "Application in use",
"To be phased out": "To be phased out",
"Business owner": "Business owner",
"Technical owner": "Technical owner",
"The person in the organisation who is responsible for how the application is used.": "The person in the organisation who is responsible for how the application is used.",
"The person in the organisation who is responsible for running and maintaining the application.": "The person in the organisation who is responsible for running and maintaining the application.",
"Add to our landscape": "Add to our landscape",
"Connections and services": "Connections and services",
"The applications your organisation uses, with the version it runs, where it stands and who owns it.": "The applications your organisation uses, with the version it runs, where it stands and who owns it.",
"No applications in use recorded for this organisation yet": "No applications in use recorded for this organisation yet"
},
"nplurals=2; plural=(n != 1);"
)
12 changes: 11 additions & 1 deletion l10n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -817,6 +817,16 @@
"High risk without FRIA": "High risk without FRIA",
"Application and supplier": "Application and supplier",
"History": "History",
"No AI systems registered for this application": "No AI systems registered for this application"
"No AI systems registered for this application": "No AI systems registered for this application",
"Application in use": "Application in use",
"To be phased out": "To be phased out",
"Business owner": "Business owner",
"Technical owner": "Technical owner",
"The person in the organisation who is responsible for how the application is used.": "The person in the organisation who is responsible for how the application is used.",
"The person in the organisation who is responsible for running and maintaining the application.": "The person in the organisation who is responsible for running and maintaining the application.",
"Add to our landscape": "Add to our landscape",
"Connections and services": "Connections and services",
"The applications your organisation uses, with the version it runs, where it stands and who owns it.": "The applications your organisation uses, with the version it runs, where it stands and who owns it.",
"No applications in use recorded for this organisation yet": "No applications in use recorded for this organisation yet"
}
}
12 changes: 11 additions & 1 deletion l10n/nl.js
Original file line number Diff line number Diff line change
Expand Up @@ -888,7 +888,17 @@ OC.L10N.register(
"FRIA": "FRIA",
"High risk without FRIA": "Hoog risico zonder FRIA",
"Application and supplier": "Applicatie en leverancier",
"No AI systems registered for this application": "Nog geen AI-systemen geregistreerd voor deze applicatie"
"No AI systems registered for this application": "Nog geen AI-systemen geregistreerd voor deze applicatie",
"Application in use": "Applicatie in gebruik",
"To be phased out": "Uit te faseren",
"Business owner": "Functioneel eigenaar",
"Technical owner": "Technisch eigenaar",
"The person in the organisation who is responsible for how the application is used.": "De persoon in de organisatie die verantwoordelijk is voor hoe de applicatie wordt gebruikt.",
"The person in the organisation who is responsible for running and maintaining the application.": "De persoon in de organisatie die verantwoordelijk is voor het draaien en onderhouden van de applicatie.",
"Add to our landscape": "Toevoegen aan ons landschap",
"Connections and services": "Koppelingen en diensten",
"The applications your organisation uses, with the version it runs, where it stands and who owns it.": "De applicaties die uw organisatie gebruikt, met de versie die draait, de fase waarin ze staan en wie de eigenaar is.",
"No applications in use recorded for this organisation yet": "Nog geen applicaties in gebruik vastgelegd voor deze organisatie"
},
"nplurals=2; plural=(n != 1);"
)
12 changes: 11 additions & 1 deletion l10n/nl.json
Original file line number Diff line number Diff line change
Expand Up @@ -887,6 +887,16 @@
"FRIA": "FRIA",
"High risk without FRIA": "Hoog risico zonder FRIA",
"Application and supplier": "Applicatie en leverancier",
"No AI systems registered for this application": "Nog geen AI-systemen geregistreerd voor deze applicatie"
"No AI systems registered for this application": "Nog geen AI-systemen geregistreerd voor deze applicatie",
"Application in use": "Applicatie in gebruik",
"To be phased out": "Uit te faseren",
"Business owner": "Functioneel eigenaar",
"Technical owner": "Technisch eigenaar",
"The person in the organisation who is responsible for how the application is used.": "De persoon in de organisatie die verantwoordelijk is voor hoe de applicatie wordt gebruikt.",
"The person in the organisation who is responsible for running and maintaining the application.": "De persoon in de organisatie die verantwoordelijk is voor het draaien en onderhouden van de applicatie.",
"Add to our landscape": "Toevoegen aan ons landschap",
"Connections and services": "Koppelingen en diensten",
"The applications your organisation uses, with the version it runs, where it stands and who owns it.": "De applicaties die uw organisatie gebruikt, met de versie die draait, de fase waarin ze staan en wie de eigenaar is.",
"No applications in use recorded for this organisation yet": "Nog geen applicaties in gebruik vastgelegd voor deze organisatie"
}
}
18 changes: 10 additions & 8 deletions lib/Settings/softwarecatalogus_register.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
"info": {
"title": "Software Catalog Register",
"description": "Register containing AMEF and Voorzieningen schemas for the VNG Software Catalog application. This configuration includes schemas for applications, services, organizations, and compliance tracking.",
"version": "2.5.3",
"changelog": "2.5.3: the aiSystem schema (0.1.0) joins the stackiq register, for the AI systems an organisation uses and their EU AI Act classification (landscape-ai-system-inventory). 2.5.2: the connection schema (0.3.3) asked its national provision picker for gemmaType Buitengemeentenlijke voorziening, a spelling the GEMMA model does not use (it says Buitengemeentelijke voorziening), so the picker found nothing; its name template named the keys gegevensuitwisselingRichting and buitengemeentelijkVoorziening and the values AnaarB, BnaarA and bi-directioneel, all renamed since, so a connection had no readable name; and type, status and dataExchangeDirection become facetable for the new Connections page (connections-catalogue-pages). 2.5.1: the x-openregister-lifecycle blocks of usage, catalogContract, connection and moduleVersion still named the Dutch states (Verwerving/Gepland/In productie/Uit te faseren/Uitgefaseerd, In onderhandeling/Actief/Verlopen, in ontwikkeling/in gebruik/einde ondersteuning/teruggetrokken) while their status enums and the rows RenameDutchCatalogValues migrated are English, so no transition was ever offered on those records (stackiq#1140). The states now use the enum values, and the four schema versions are bumped (usage 1.5.1, catalogContract 0.1.2, connection 0.3.2, moduleVersion 0.1.5) because a lifecycle-only edit does not deploy without one, as 2.4.4 records. 2.4.4: organization.status was left behind by #520's enum translation — its `default` was still 'Concept' and its whole x-openregister-lifecycle block still named Concept/Actief/Deactief, while the enum and the migrated rows are Draft/Active/Inactive/merged. A default outside its own enum makes every newly created organisation fall out of the Organisations index filter, and a lifecycle whose from/to values match no row offers no transition at all — neither raises an error. The schema version is bumped with it because a deployed version >= the declared one makes the import SKIP, and OpenRegister's schemaContentDiffers() escape hatch compares only properties/required/authorization — never `configuration` — so a lifecycle-only edit would never have deployed. 2.4.3: Re-authored Dutch schema-level titles to English (dienst, kwetsbaarheid, contactpersoon, organisatie, gebruik, koppeling, beoordeeling, module, bioMaatregel, moduleVersie, sbomComponent); schema keys unchanged, Dutch labels now come from the app's l10n translation files. 2.4.2: Moved SBOM provenance properties (sbomLastImportedAt, sbomFormat, sbomFileName, sbomComponents) from the organisatie schema to moduleVersie, where SBOM imports actually record them; without this the moduleVersie magic table lacked the columns so recordProvenance() writes were silently dropped and the import-status endpoint always reported 'never imported'. 2.4.1: Re-authored Dutch schema property titles to English (property keys unchanged); Dutch labels now come from the app's l10n translation files."
"version": "2.5.4",
"changelog": "2.5.4: usage (1.5.2) gains businessOwner and technicalOwner, contact persons of the consumer organisation; a usage is named after its application and organisation; status becomes facetable for the Applications in use filters (landscape-usage-registration). 2.5.3: the aiSystem schema (0.1.0) joins the stackiq register, for the AI systems an organisation uses and their EU AI Act classification (landscape-ai-system-inventory). 2.5.2: the connection schema (0.3.3) asked its national provision picker for gemmaType Buitengemeentenlijke voorziening, a spelling the GEMMA model does not use (it says Buitengemeentelijke voorziening), so the picker found nothing; its name template named the keys gegevensuitwisselingRichting and buitengemeentelijkVoorziening and the values AnaarB, BnaarA and bi-directioneel, all renamed since, so a connection had no readable name; and type, status and dataExchangeDirection become facetable for the new Connections page (connections-catalogue-pages). 2.5.1: the x-openregister-lifecycle blocks of usage, catalogContract, connection and moduleVersion still named the Dutch states (Verwerving/Gepland/In productie/Uit te faseren/Uitgefaseerd, In onderhandeling/Actief/Verlopen, in ontwikkeling/in gebruik/einde ondersteuning/teruggetrokken) while their status enums and the rows RenameDutchCatalogValues migrated are English, so no transition was ever offered on those records (stackiq#1140). The states now use the enum values, and the four schema versions are bumped (usage 1.5.1, catalogContract 0.1.2, connection 0.3.2, moduleVersion 0.1.5) because a lifecycle-only edit does not deploy without one, as 2.4.4 records. 2.4.4: organization.status was left behind by #520's enum translation — its `default` was still 'Concept' and its whole x-openregister-lifecycle block still named Concept/Actief/Deactief, while the enum and the migrated rows are Draft/Active/Inactive/merged. A default outside its own enum makes every newly created organisation fall out of the Organisations index filter, and a lifecycle whose from/to values match no row offers no transition at all — neither raises an error. The schema version is bumped with it because a deployed version >= the declared one makes the import SKIP, and OpenRegister's schemaContentDiffers() escape hatch compares only properties/required/authorization — never `configuration` — so a lifecycle-only edit would never have deployed. 2.4.3: Re-authored Dutch schema-level titles to English (dienst, kwetsbaarheid, contactpersoon, organisatie, gebruik, koppeling, beoordeeling, module, bioMaatregel, moduleVersie, sbomComponent); schema keys unchanged, Dutch labels now come from the app's l10n translation files. 2.4.2: Moved SBOM provenance properties (sbomLastImportedAt, sbomFormat, sbomFileName, sbomComponents) from the organisatie schema to moduleVersie, where SBOM imports actually record them; without this the moduleVersie magic table lacked the columns so recordProvenance() writes were silently dropped and the import-status endpoint always reported 'never imported'. 2.4.1: Re-authored Dutch schema property titles to English (property keys unchanged); Dutch labels now come from the app's l10n translation files."
},
"x-openregister": {
"type": "application",
Expand Down Expand Up @@ -2657,7 +2657,7 @@
"slug": "usage",
"title": "Usage",
"description": "Het gebruik van applicaties, diensten en koppelingen door afnemers",
"version": "1.5.1",
"version": "1.5.2",
"omschrijving": "",
"icon": "Gauge",
"x-openregister-notifications": {
Expand Down Expand Up @@ -2716,6 +2716,8 @@
"title": "Contact person",
"order": 3
},
"businessOwner": {"type": "object", "title": "Business owner", "description": "The person in the organisation who is responsible for how the application is used.", "facetable": false, "objectConfiguration": {"handling": "related-object"}, "$ref": "#/components/schemas/contactPerson", "x-relation-filter": {"organization": "@object.consumer"}, "order": 18},
"technicalOwner": {"type": "object", "title": "Technical owner", "description": "The person in the organisation who is responsible for running and maintaining the application.", "facetable": false, "objectConfiguration": {"handling": "related-object"}, "$ref": "#/components/schemas/contactPerson", "x-relation-filter": {"organization": "@object.consumer"}, "order": 19},
"participants": {
"description": "De organisaties die deelnemen aan dit gebruik (voor samenwerkingen)",
"type": "array",
Expand Down Expand Up @@ -2895,7 +2897,7 @@
"To be phased out",
"Phased out"
],
"facetable": false,
"facetable": true,
"title": "Status",
"example": "Bijvoorbeeld: Gepland"
},
Expand Down Expand Up @@ -3200,7 +3202,7 @@
]
},
"configuration": {
"objectNameField": "consumer",
"objectNameField": "{{ module }} ({{ consumer }})",
"objectDescriptionField": "module",
"allowFiles": true,
"allowedTags": [
Expand Down Expand Up @@ -8379,7 +8381,7 @@
"version": "0.0.1"
},
"name": "Topdesk bij Servicecenter Rijnland (SSC)",
"status": "in-gebruik",
"status": "In production",
"elementRef": "topdesk-ssc-rijnland",
"consumer": {
"name": "Servicecenter Rijnland",
Expand Down Expand Up @@ -8408,7 +8410,7 @@
"version": "0.0.1"
},
"name": "KEY2 Burgerzaken gedeeld via GBLT",
"status": "in-gebruik",
"status": "Planned",
"elementRef": "key2-burgerzaken-gblt",
"consumer": {
"name": "Gemeentebelastingen Coevorden Hardenberg (GBLT)",
Expand All @@ -8432,7 +8434,7 @@
"version": "0.0.1"
},
"name": "Suite4 Schuldhulpverlening - eigenaar Gemeente Delft",
"status": "in-gebruik",
"status": "In production",
"elementRef": "suite4-schuldhulp-delft",
"consumer": {
"name": "Gemeente Delft",
Expand Down
4 changes: 4 additions & 0 deletions lib/Settings/stackiq_mock_register.json
Original file line number Diff line number Diff line change
Expand Up @@ -9076,6 +9076,8 @@
"consumer": {},
"provider": {},
"contactPerson": {},
"businessOwner": {},
"technicalOwner": {},
"participants": [
{}
],
Expand Down Expand Up @@ -10645,6 +10647,8 @@
"consumer": {},
"provider": {},
"contactPerson": {},
"businessOwner": {},
"technicalOwner": {},
"participants": [
{}
],
Expand Down
Loading
Loading