Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
c2cc3d0
feat(cmdb-import): read the archive sheet and let module and usage be…
WilcoLouwerse Oct 12, 2026
33585a1
feat(cmdb-import): archive or soft-delete applications that left the …
WilcoLouwerse Oct 12, 2026
7184a4a
feat(cmdb-import): offer the missing-records choice and an Archived q…
WilcoLouwerse Oct 12, 2026
f72f2b6
feat(cmdb-import): expose the import mapping read-only to the admin
WilcoLouwerse Oct 12, 2026
7a472a6
feat(cmdb-import): show the import mapping read-only in the CMDB impo…
WilcoLouwerse Oct 12, 2026
388181a
docs(openspec): name the renamed module-version test in the cmdb-expo…
WilcoLouwerse Oct 12, 2026
07d533d
Merge branch 'feat/woo587-cmdb-import-archive-reconciliation-1-reader…
WilcoLouwerse Oct 12, 2026
d3601b3
fix(cmdb-import): do not cache a trash listing that failed to load
WilcoLouwerse Oct 12, 2026
f196420
docs(cmdb-import): point the two new @spec tags at the archived cmdb-…
WilcoLouwerse Oct 12, 2026
c4d2b33
Merge branch 'feat/woo587-cmdb-import-archive-reconciliation-2-reconc…
WilcoLouwerse Oct 12, 2026
f6ae270
fix(cmdb-import): stop telling the admin missing applications stay an…
WilcoLouwerse Oct 12, 2026
0108ef0
fix(cmdb-import): answer the mapping's failure reason as one bounded …
WilcoLouwerse Oct 12, 2026
bcd4697
Merge branch 'feat/woo588-cmdb-import-mapping-view-1-endpoint' into f…
WilcoLouwerse Oct 12, 2026
97c4e99
docs(cmdb-import): say what a split import with Keep leaves undone
WilcoLouwerse Oct 12, 2026
80dc551
docs(openspec): state the bound on the mapping's failure reason
WilcoLouwerse Oct 12, 2026
a3f4da3
Merge branch 'feat/woo588-cmdb-import-mapping-view-1-endpoint' into f…
WilcoLouwerse Oct 12, 2026
3671df0
fix(cmdb-import): stop counting rows as applications in the reconcili…
WilcoLouwerse Oct 12, 2026
ecc9c8b
fix(cmdb-import): expose the import's write rules in the mapping over…
WilcoLouwerse Oct 12, 2026
bbf4209
fix(cmdb-import): say applications, not only rows, in the cancel texts
WilcoLouwerse Oct 12, 2026
dc86739
Merge branch 'feat/woo588-cmdb-import-mapping-view-1-endpoint' into f…
WilcoLouwerse Oct 12, 2026
16337d9
fix(cmdb-import): report archive-sheet APPIDs that have no cached value
WilcoLouwerse Oct 12, 2026
11d9a23
test(cmdb-import): pin every bound the archive sheet is read under
WilcoLouwerse Oct 12, 2026
8360c6a
Merge branch 'feat/woo587-cmdb-import-archive-reconciliation-1-reader…
WilcoLouwerse Oct 12, 2026
ac3305a
fix(cmdb-import): name archived, unarchived, deleted and restored in …
WilcoLouwerse Oct 12, 2026
08acba6
fix(cmdb-import): never soft-delete on an archive sheet with unreadab…
WilcoLouwerse Oct 12, 2026
f99c063
fix(cmdb-import): let the Archived tab of the Applications page ignor…
WilcoLouwerse Oct 12, 2026
b30cd7f
fix(cmdb-import): reconcile one application per import key
WilcoLouwerse Oct 12, 2026
a2b951d
fix(cmdb-import): show the import's write rules in the mapping block
WilcoLouwerse Oct 12, 2026
2e381f7
fix(cmdb-import): name every sheet the profile reads in the help texts
WilcoLouwerse Oct 12, 2026
b1d249a
test(cmdb-import): make the missing-applications choice and the delet…
WilcoLouwerse Oct 12, 2026
8a1562a
fix(cmdb-import): name the archive sheet where the section says which…
WilcoLouwerse Oct 12, 2026
a4570e7
test(cmdb-import): pin the totality promises of the reconciliation
WilcoLouwerse Oct 12, 2026
cdbec3d
docs(cmdb-import): say the archive sheet is read, and bounded, in eve…
WilcoLouwerse Oct 12, 2026
ae92947
test(cmdb-import): run the sheet-name wiring and the mapping error st…
WilcoLouwerse Oct 12, 2026
7db0b2a
docs(cmdb-import): narrow the mapping block's claim to what it shows
WilcoLouwerse Oct 12, 2026
2795770
style(cmdb-import): bring the two reconciliation fixes within phpcs
WilcoLouwerse Oct 12, 2026
226b76c
Merge branch 'feat/woo587-cmdb-import-archive-reconciliation-2-reconc…
WilcoLouwerse Oct 12, 2026
aa3b664
docs(openspec): state the archive-only rule in every copy
WilcoLouwerse Oct 12, 2026
70d6f93
docs(openspec): the Archived tab ignores the facet narrowing
WilcoLouwerse Oct 12, 2026
df28777
fix(cmdb-import): keep create-only defaults out of createOnlyFields
WilcoLouwerse Oct 12, 2026
2e89a1e
Merge branch 'feat/woo587-cmdb-import-archive-reconciliation-1-reader…
WilcoLouwerse Oct 12, 2026
9fb2dfd
docs(cmdb-import): state all three cases where an import archives and…
WilcoLouwerse Oct 12, 2026
abc7108
Merge branch 'feat/woo588-cmdb-import-mapping-view-1-endpoint' into f…
WilcoLouwerse Oct 12, 2026
e7f9125
test(cmdb-import): fixture follows the overview's createOnlyFields
WilcoLouwerse Oct 12, 2026
e8772a7
docs(cmdb-import): state the full archive-only rule in the service do…
WilcoLouwerse Oct 12, 2026
2d288ac
docs(cmdb-import): correct the Modules page note on how quick filters…
WilcoLouwerse Oct 12, 2026
16de647
fix(cmdb-import): count the rows in the uncached-archive-key warning
WilcoLouwerse Oct 12, 2026
f04bf82
fix(cmdb-import): name every sheet in the missing-sheet and too-large…
WilcoLouwerse Oct 12, 2026
d805c5b
fix(cmdb-import): bring every usage of a leaving key to the same state
WilcoLouwerse Oct 12, 2026
9a5ffff
Merge branch 'feat/woo587-cmdb-import-archive-reconciliation-2-reconc…
WilcoLouwerse Oct 12, 2026
6ecb274
fix(cmdb-import): keep a mapped field with a create default in create…
WilcoLouwerse Oct 12, 2026
27d1ec2
Merge branch 'feat/woo588-cmdb-import-mapping-view-1-endpoint' into f…
WilcoLouwerse Oct 12, 2026
323d761
docs(cmdb-import): quote both forms of the uncached-APPID warning
WilcoLouwerse Oct 12, 2026
024122b
feat(cmdb-import): run the mapping packs stored in OpenRegister
WilcoLouwerse Oct 12, 2026
9450c84
feat(cmdb-import): show where each import pack comes from and link to…
WilcoLouwerse Oct 12, 2026
6420306
Merge branch 'woo588-or-1' into woo588-or-2
WilcoLouwerse Oct 12, 2026
f538f29
fix(cmdb-import): limit edited packs to vetted fields and run only ha…
WilcoLouwerse Oct 12, 2026
0d97674
Merge origin/feat/woo588-cmdb-import-mapping-view-2-ui into the OpenR…
WilcoLouwerse Oct 12, 2026
8a8e81a
Merge branch 'woo588-or-1' into woo588-or-2
WilcoLouwerse Oct 12, 2026
62bfb52
fix(cmdb-import): link a broken stored pack to its editor and test th…
WilcoLouwerse Oct 12, 2026
c59713e
docs(cmdb-import): state the vetted-field rule where the loader appli…
WilcoLouwerse Oct 12, 2026
f93adfd
Merge branch 'woo588-or-1' into woo588-or-2
WilcoLouwerse Oct 12, 2026
9b64b31
chore(release): bump the version so the CMDB pack seed step runs on u…
WilcoLouwerse Oct 12, 2026
4110559
Merge branch 'woo588-or-1' into woo588-or-2
WilcoLouwerse Oct 12, 2026
e82c8d2
test(repair): read info.xml as bytes in the seed-step registration test
WilcoLouwerse Oct 13, 2026
d4d7f38
style(e2e): prettier on the CMDB import pack spec
WilcoLouwerse Oct 13, 2026
a1f91b0
Merge branch 'woo588-or-1' into woo588-or-2
WilcoLouwerse Oct 13, 2026
1fe71a1
chore(cmdb-import): start the TOPdesk import packs at version 1.0.0
WilcoLouwerse Oct 13, 2026
057abc0
feat(cmdb-import): let an edited pack map any plain field of its targ…
WilcoLouwerse Oct 13, 2026
6f6ec40
Merge branch 'woo588-or-1' into woo588-or-2
WilcoLouwerse Oct 13, 2026
836107c
style(cmdb-import): prettier on the CMDB import specs
WilcoLouwerse Oct 13, 2026
ce55ebc
feat(cmdb-import): show the mapping as tables and shorten the option …
WilcoLouwerse Oct 13, 2026
ae31ac3
docs: scope the archive-reconciliation change to the reader slice and…
WilcoLouwerse Oct 13, 2026
ddcffcc
Merge branch 'feat/woo587-cmdb-import-archive-reconciliation-1-reader…
WilcoLouwerse Oct 13, 2026
8dfa03a
feat(cmdb-import): shorten the help of the missing-applications choice
WilcoLouwerse Oct 13, 2026
dca8211
fix(cmdb-import): never soft-delete when a CMDB-sheet APPID is unread…
WilcoLouwerse Oct 13, 2026
18bd222
docs(openspec): tick the reconciliation tasks that this PR implements
WilcoLouwerse Oct 13, 2026
3d172db
Merge branch 'feat/woo587-cmdb-import-archive-reconciliation-2-reconc…
WilcoLouwerse Oct 13, 2026
3d8b789
fix(cmdb-import): view the mapping without writing, and never overwri…
WilcoLouwerse Oct 13, 2026
8f07929
fix(cmdb-import): translate both mapping endpoint errors with literal…
WilcoLouwerse Oct 13, 2026
27a2110
fix(cmdb-import): see a fully empty CMDB row with an uncached APPID; …
WilcoLouwerse Oct 13, 2026
3c81e23
docs(cmdb-import): describe only what this part ships, and what editi…
WilcoLouwerse Oct 13, 2026
c55a96d
test(cmdb-import): wait on a rendered list, not networkidle, and fail…
WilcoLouwerse Oct 13, 2026
4b70494
fix(applications): say on the Archived tab that facets and search are…
WilcoLouwerse Oct 13, 2026
3c17b47
docs(cmdb-import): tick the UI tasks and document the archive tab not…
WilcoLouwerse Oct 13, 2026
f1ca071
Merge branch 'feat/woo587-cmdb-import-archive-reconciliation-2-reconc…
WilcoLouwerse Oct 13, 2026
c09e9c9
Merge branch 'woo588-or-1' into woo588-or-2
WilcoLouwerse Oct 13, 2026
49bc84b
fix(cmdb-import): announce the mapping block's loading state, and tid…
WilcoLouwerse Oct 13, 2026
1719b19
fix(applications): keep the Archived-tab note in step with the list's…
WilcoLouwerse Oct 13, 2026
e2081bb
fix(cmdb-import): type the import's pack callback as never null
WilcoLouwerse Oct 13, 2026
3ddbffd
Merge branch 'woo588-or-1' into woo588-or-2
WilcoLouwerse Oct 13, 2026
a1cca04
Merge remote-tracking branch 'origin/feat/woo587-cmdb-import-archive-…
WilcoLouwerse Oct 13, 2026
c797020
fix(cmdb-import): refuse pack mappings of fields other subsystems own
WilcoLouwerse Oct 13, 2026
81b1bc7
fix(cmdb-import): show the mapping the next import runs, and keep a p…
WilcoLouwerse Oct 13, 2026
f7421aa
test(cmdb-import): pin every write method and opening marker of the s…
WilcoLouwerse Oct 13, 2026
6111cb8
docs(cmdb-import): align spec, design and docs with the pack rules an…
WilcoLouwerse Oct 13, 2026
94f976e
test(cmdb-import): put the deleted business-owner pack back when the …
WilcoLouwerse Oct 13, 2026
1004ee7
test(cmdb-import): expect updatePending in the mapping endpoint's pac…
WilcoLouwerse Oct 13, 2026
50cde19
Merge branch 'feat/woo588-cmdb-import-mapping-view-1-endpoint' into f…
WilcoLouwerse Oct 13, 2026
0a349a8
fix(cmdb-import): fail closed when a register fragment cannot be read
WilcoLouwerse Oct 13, 2026
7fc5172
fix(cmdb-import): show field mappings, write rules and pending update…
WilcoLouwerse Oct 13, 2026
d5a7795
Merge branch 'feat/woo588-cmdb-import-mapping-view-1-endpoint' into f…
WilcoLouwerse Oct 13, 2026
9fd025a
fix(cmdb-import): announce the mapping load and its failure through a…
WilcoLouwerse Oct 13, 2026
afaa085
refactor(cmdb-import): read the register's field rules in their own c…
WilcoLouwerse Oct 13, 2026
ba983a7
Merge branch 'feat/woo588-cmdb-import-mapping-view-1-endpoint' into f…
WilcoLouwerse Oct 13, 2026
3fbc2f9
Merge pull request #1287 from ConductionNL/feat/woo587-cmdb-import-ar…
WilcoLouwerse Oct 15, 2026
0e4bcd4
Merge pull request #1286 from ConductionNL/feat/woo587-cmdb-import-ar…
WilcoLouwerse Oct 15, 2026
4e66956
Merge pull request #1289 from ConductionNL/feat/woo588-cmdb-import-ma…
WilcoLouwerse Oct 15, 2026
7d5aa91
refactor(cmdb-import): choose a missing application's target and reas…
WilcoLouwerse Oct 15, 2026
363c470
docs(applications): tag the quick-filter tab tracking with the archiv…
WilcoLouwerse Oct 15, 2026
ca176a5
Merge remote-tracking branch 'origin/development' into feat/woo587-cm…
WilcoLouwerse Oct 15, 2026
e0aba3d
style(test): prettier on the archive quick filter spec
WilcoLouwerse Oct 15, 2026
8a80c17
Merge branch 'feat/woo587-cmdb-import-archive-reconciliation-1-reader…
WilcoLouwerse Oct 15, 2026
6070859
chore(deps-dev): bump symfony/yaml from 6.4.40 to 6.4.48
WilcoLouwerse Oct 15, 2026
68c49f4
test(cmdb-import): load an OpenRegister stand-in only when the class …
WilcoLouwerse Oct 15, 2026
e8dce55
test(cmdb-import): give the OpenRegister stand-in exceptions OpenRegi…
WilcoLouwerse Oct 15, 2026
e7988c3
fix(cmdb-import): name the archive sheet the profile names, not the s…
WilcoLouwerse Oct 15, 2026
8e027d2
docs(openspec): give both changes the same REQ-CMDB-014 block
WilcoLouwerse Oct 15, 2026
727793f
style(cmdb-import): sort the named imports of the CMDB import section
WilcoLouwerse Oct 15, 2026
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
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,22 @@
sheets becomes or updates a module, its vendor, a usage for the municipality
and a contact person for its owner; a repeat import matches on APPID, so it
updates instead of duplicating. See `docs/features/cmdb-import.md`.
- CMDB import: on an OpenRegister with the migration-pack editor
(openregister#4602), the import runs the mapping packs kept in
OpenRegister's migration pack store, where an administrator edits them.
The `SeedCmdbImportPacks` repair step stores them on install and upgrade;
a pack nobody edited follows newer releases, an edited one is kept.
Viewing the mapping writes nothing. An older OpenRegister keeps the packs
that ship with stackiq.
- CMDB import, repeat imports: applications that left the CMDB sheets are
archived when the sheet "Gearchiveerde Applicaties" lists them and moved to
OpenRegister's trash when no sheet does; one that returns is unarchived or
restored, never duplicated. The new option `missingRecords` (`archive`, the
default, or `keep`) is a choice in the CMDB import section, and the report
counts archived, unarchived, deleted and restored applications. The module
(0.3.9) and usage (1.5.7) schemas opt into OpenRegister's archive state, and
the Applications and Applications in use pages get an "Archived" quick
filter. (cmdb-import-archive-reconciliation)

### Changed
- EOL feed: the register and schema slugs the feature reads from are corrected.
Expand Down
12 changes: 11 additions & 1 deletion appinfo/info.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ Vrij en open source onder de EUPL-licentie.

**Ondersteuning:** Voor ondersteuning, neem contact op via support@conduction.nl. Voor een Service Level Agreement (SLA), neem contact op via sales@conduction.nl.
]]></description>
<version>0.2.5-unstable.20261008120000</version>
<version>0.2.6-unstable.20261012120000</version>
Comment thread
WilcoLouwerse marked this conversation as resolved.
<licence>EUPL-1.2</licence>
<author mail="info@conduction.nl" homepage="https://www.conduction.nl/">Conduction</author>
<namespace>Stackiq</namespace>
Expand Down Expand Up @@ -250,6 +250,14 @@ Vrij en open source onder de EUPL-licentie.
instead of failing.
-->
<step>OCA\Stackiq\Repair\RenameDutchCatalogValues</step>
<!--
Stores the CMDB import's sheet packs in OpenRegister's migration-pack
store, where an administrator edits them; the import reads them from
there. Creates a missing pack and replaces one nobody edited with this
release's shipped pack; an edited pack is kept and reported. Never
throws, and does nothing without OpenRegister's store.
-->
<step>OCA\Stackiq\Repair\SeedCmdbImportPacks</step>
</post-migration>
<!--
FRESH INSTALL. Nextcloud does NOT run post-migration on a first install:
Expand Down Expand Up @@ -324,6 +332,8 @@ Vrij en open source onder de EUPL-licentie.
exact stored value so an admin's own register is never touched. -->
<step>OCA\Stackiq\Repair\RepointEolSyncConfig</step>
<step>OCA\Stackiq\Repair\InitializeSettings</step>
<!-- A fresh install seeds the CMDB import packs too; see <post-migration> above. -->
<step>OCA\Stackiq\Repair\SeedCmdbImportPacks</step>
</install>
</repair-steps>

Expand Down
3 changes: 3 additions & 0 deletions appinfo/routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,9 @@
// @spec openspec/changes/cmdb-export-import/tasks.md#task-8
['name' => 'cmdbImport#import', 'url' => '/api/cmdb-import', 'verb' => 'POST'],
['name' => 'cmdbImport#cancel', 'url' => '/api/cmdb-import/{operationId}/cancel', 'verb' => 'POST'],
// The mapping the CMDB import uses, read-only — same posture as the import (Nextcloud admins only, CSRF).
// @spec openspec/changes/cmdb-import-mapping-view/specs/cmdb-export-import/spec.md#requirement-the-admin-settings-shall-show-the-mapping-the-import-uses-req-cmdb-020
['name' => 'settings#getCmdbImportMapping', 'url' => '/api/settings/cmdb-import/mapping', 'verb' => 'GET'],

// User Groups management routes
['name' => 'settings#getGenericUserGroups', 'url' => '/api/settings/user-groups/generic', 'verb' => 'GET'],
Expand Down
12 changes: 6 additions & 6 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion docs/features/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ The ArchiMate integration maps GEMMA Softwarecatalogus objects to ArchiMate appl

## CMDB Import

Import a TOPdesk CMDB export (`.xlsx`) for one municipality from the **CMDB import** section of the admin settings. Every application row of the two CMDB sheets ("Onbeh Applicaties CMDB" and "Beheerde Applicaties CMDB") becomes or updates a module, its vendor as a Supplier organisation, a usage that links it to the municipality and records whether maintenance is arranged, and a contact person for its owner (identity in Nextcloud Contacts, never public). A repeat import matches on APPID per municipality, so it updates instead of duplicating, and leaves applications missing from the newer export as they are. The column mapping is declarative JSON executed by OpenRegister's mapping engine.
Import a TOPdesk CMDB export (`.xlsx`) for one municipality from the **CMDB import** section of the admin settings. Every application row of the two CMDB sheets ("Onbeh Applicaties CMDB" and "Beheerde Applicaties CMDB") becomes or updates a module, its vendor as a Supplier organisation, a usage that links it to the municipality and records whether maintenance is arranged, and a contact person for its owner (identity in Nextcloud Contacts, never public). A repeat import matches on APPID per municipality, so it updates instead of duplicating. By default it archives the applications that moved to the sheet "Gearchiveerde Applicaties" and moves those on no sheet any more to OpenRegister's trash, and brings either back when it returns; the admin can choose to keep them instead. The Applications and Applications in use pages list the archive under the quick filter "Archived". The column mapping is declarative JSON executed by OpenRegister's mapping engine.

See [CMDB import](cmdb-import.md) for the steps, the expected file structure, the error codes and how to adjust the mapping.

Expand Down
Loading
Loading