Source: projects/identity-management/oim-kb-update/README.md
> Source: projects/identity-management/oim-kb-update/README.md
OIM KB Update
Scheduled research project for building durable One Identity Manager knowledge, with primary focus on IT Shop structure, shop availability, and the DB objects behind requestable entitlements.
Research Focus
Priority topics:
1. IT Shop structure and hierarchy:
ITShopOrgITShopInfo- shop, shelf, product, and customer-node semantics
- required predecessor relationships
2. Service items and service categories:
AccProductAccProductGroup- required category assignment for shop availability
3. Entitlement availability:
- entitlement-specific "IT Shop" flags and assignment tables
- what makes an AD group, system role, or other entitlement requestable
- required
AccProductlinks and product-node links
4. DB behavior:
- triggers
- stored procedures
- templates
- validation messages and rollback patterns
5. Development and troubleshooting:
- safe sandbox DML patterns
- Object Browser / Manager equivalents
- sync and provisioning diagnosis
- common IT Shop misconfiguration symptoms
6. Local product sources:
- MDK/SDK material on the sandbox host, especially
C:\Dev\OneIM10.0.0-MDK\MDK - installed One Identity Manager binaries and configuration under
C:\Dev\OneIdentityManager.10.0 - scripts, schema metadata, templates, and examples that explain DB behavior better than public docs alone
Source Priority
For every target question, prefer in this order:
1. Live sandbox DB on im.sandbox.local (authoritative for this environment).
2. OneIM MDK / SDK on the sandbox host, version-matched to the sandbox (C:\Dev\OneIM10.0.0-MDK\MDK, C:\Dev\OneIdentityManager.10.0).
3. Vendor docs (One Identity Manager 10.0 LTS technical documents).
A question is not "answered" until live-DB shape, real row examples, and relevant trigger/constraint definitions are recorded under sandbox-db/.
Open Deltas
Track MDK/SDK ↔ live-DB disagreements here so they don't get lost between runs. (Empty until the first delta is observed.)
Sandbox Rules
The automation may use the sandbox host directly for validation and experiments. Each substantive run should learn from the live sandbox database unless there is a clear reason to skip it; if skipped, note why. Useful DB learning includes schema inspection, existing row comparison, trigger/procedure lookup, validation-error reproduction, and checking how synced AD groups/system roles become requestable.
It may create temporary test rows or changes when useful, but must record what changed and roll back test changes when they break behavior or are only exploratory.
Host-local source paths to inspect through the sandbox helpers when relevant:
C:\Dev\OneIM10.0.0-MDK\MDKC:\Dev\OneIdentityManager.10.0
Known recovery point:
- Full database backup:
C:\Dev\OneIM.bak
Do not store credentials in this project. Use the existing sandbox credential helpers and DPAPI cache.
Output Rules
Each run should prefer compact, cumulative notes over noisy logs:
- Add or update markdown under this project or
projects/identity-management/knowledge-base/. - Cite source URLs and access dates for external sources.
- Record live sandbox findings separately from documentation claims.
- For DB findings, include table names, important columns, required values, and observed validation errors.
- Run
brain/scripts/Build-Brain.ps1after markdown changes. - Add a short coordination journal entry for nontrivial sandbox changes.
Runs
- 2026-04-27 run log
- 2026-04-27 run log (2)
- 2026-04-27 run log (3)
- 2026-04-27 run log (4)
- 2026-04-27 run log (5)
- 2026-04-27 run log (6)
- 2026-04-27 run log (7)
- 2026-04-27 run log (8)
- 2026-04-27 run log (9)
- 2026-04-27 run log (10)
- 2026-04-27 run log (11)
- 2026-04-27 run log (12)
- 2026-04-27 run log (13)
- 2026-04-27 run log (14)
- 2026-04-27 run log (15)
- 2026-04-27 run log (16)
- 2026-04-27 run log (17)
- 2026-04-27 run log (18)
- 2026-04-27 run log (19)
- 2026-04-27 run log (20)
- 2026-04-27 run log (21)
- 2026-04-27 run log (22)
- 2026-04-27 run log (23)
- 2026-04-27 run log (24)
- 2026-04-27 run log (25)
- 2026-04-27 run log (26)
- 2026-04-27 run log (27)
- 2026-04-27 run log (28)
- 2026-04-27 sandbox DB evidence
- 2026-04-27 sandbox DB evidence (availability)
- 2026-04-27 sandbox DB evidence (AutoPublish ADSGroup)
- 2026-04-27 sandbox DB evidence (ITShopOrg columns + service categories)
- 2026-04-27 sandbox DB evidence (service categories + preprocessor gates)
- 2026-04-27 sandbox DB evidence (ITShopInfo SC shopping center)
- 2026-04-27 sandbox DB evidence (ITShopInfo validation + QER\\ITShop config params)
- 2026-04-27 sandbox DB evidence (entitlement link tables + flags)
- 2026-04-27 sandbox DB evidence (enabled types + availability joins)
- 2026-04-27 sandbox DB evidence (DBQueue + QBM_PJobCreate)
- 2026-04-27 sandbox DB evidence (QBM_PJobCreate methods + events)
- 2026-04-27 sandbox DB evidence (ProductNode + JobCreate + DBQueueInsert)
- 2026-04-27 sandbox host evidence (ProductNode + JobCreate + DBQueueInsert)
- 2026-04-27 sandbox host evidence (ProductNodeCheck + PR node creation)
- 2026-04-27 sandbox DB evidence (ADSGroup minimal publish sequence)
- 2026-04-27 sandbox DB evidence (BaseTreeHasADSGroup PR links + BaseTreeHasObject)
- 2026-04-27 sandbox DB evidence (trigger/method/event relation index)
- 2026-04-27 sandbox host evidence
- 2026-04-27 sandbox host evidence (ITShopInfo + DialogConfigParm artifacts)
- 2026-04-27 sandbox host evidence (AutoPublish + preprocessor gates)
- 2026-04-27 sandbox host evidence (AccProductInBaseTree + IT Shop flag validation hooks)
- 2026-04-27 sandbox host evidence (ADS BaseTreeHasADSGroup + BaseTreeHasObject shipped SQL)
- 2026-04-27 sandbox host evidence (SDK ITShopOrg ScriptSamples)
- 2026-04-27 sandbox host evidence (API Server backend artifacts)
- 2026-04-27 local app evidence (decompiled method/event surface)
- 2026-04-27 local app evidence (full decompile relation index)
- 2026-04-27 local app evidence (Web Portal endpoint map)
- OIM decompiled method/event HTML index
- Web Portal and API Server Project KB
- 2026-04-27 sandbox DB evidence (AccProductInBaseTree views + trigger hooks)
- 2026-04-27 sandbox DB evidence (Web Portal cart submit snapshots)
Current Target Questions
- ✅ Which
ITShopOrg.ITShopInfovalues are valid for each node type? → SC/SH/BO/PR/CU; trigger enforces allow-list; BG/BT exist in MDK but not in this sandbox. - ✅ Which
ITShopOrgcolumns are mandatory for shop, shelf, product, and customer nodes? →Ident_Org,UID_ITShopOrg/UID_Org,UID_OrgRoot,XObjectKey(NOT NULL inBaseTree). - ✅ Which
AccProductcolumns must be populated for a requestable product? → OnlyUID_AccProduct+XObjectKey(NOT NULL). All others nullable or default 0.Ident_AccProductandUID_AccProductGroupoptional but recommended. - ✅ Is
AccProduct.UID_AccProductGroupmandatory for shop availability in this sandbox? → No; 7/16 existing PR nodes have products without service categories. - ✅ Which entitlement tables contain the IT Shop availability flag for AD groups and system roles? →
ADSGroup(IsForITShop,IsITShopOnly);ESet(same); and ~10 other entitlement tables.AccProducthasIsToHideFromITShop(portal-side, default 0, no DB enforcement observed). - ✅ Which link tables connect entitlements to
AccProductandITShopOrgproduct nodes? →BaseTreeHasADSGroup(ADSGroup ↔ BO shelf);BaseTreeHasObject(PR node ↔ ObjectKey);ITShopOrgHasADSGroupview filtersBaseTreeHasADSGroupon IT Shop subtree.AccProductInBaseTreeexists but is empty in this sandbox. - ✅ Which triggers or stored procedures enforce IT Shop consistency? →
QER_TIBaseTree/QER_TUBaseTree(ITShopInfo allow-list, ShoppingRack enqueue);ADS_TUAdsGroup(IsForITShop/uid_accproduct changes);QER_PIsForITShopFlagCheck(flag consistency validation);QER_PITShopProductNodeCreate_b(PR node creation via ShoppingRack DBQueue). - ✅ What is the smallest valid SQL/API sequence to make a synced AD group requestable in the IT Shop? → 5 steps: (1) INSERT AccProduct, (2) UPDATE ADSGroup.UID_AccProduct, (3) UPDATE ADSGroup.IsForITShop=1, (4) INSERT BaseTreeHasADSGroup on BO shelf, (5) DBQueue
QER-K-ShoppingRackProductNodecreates PR node. Seesandbox-db/2026-04-27-adsgroup-publish-sequence-db-evidence.md. - ✅ Which MDK/SDK examples or shipped metadata files document or imply the correct implementation path? → QER IT Shop procs on sandbox host (e.g.
QER_ZITShopCheckStructure.sql,QER_ZITShopCheckMethodPR.sql,QER_FTMethodForPRNode.sql); ADS StartupContent AutoFillDisplayName references; AutoPublish ADSGroup config-param scripts; plus SDK ScriptSamples showing a supported object-layer way to create/removeITShopOrgshops and customer nodes. - How do shipped OneIM 10 triggers/procs choose between
QBM_PDBQueueInsert_SingleandQBM_PDBQueueInsert_Bulk, especially for ShoppingRack and IT Shop publish/update flows? - Which
QBM_PJobCreate*calls are part ofQER_PITShopProductNodeCreate_b/ ShoppingRack processing, and which object-layer operations are intentionally delegated from SQL to the Job queue? - ✅ Which
DialogMethodrows vs object-layer/customizer methods are safe/appropriate to invoke throughQBM_PJobCreate_HOCallMethod*, and where are non-DialogMethodcustomizer methods documented in MDK/SDK material? →DialogMethodis only the UI-visible catalog; decompiled customizer assemblies show broader callable methods such asPersonWantsOrg.MakeDecision,AttestationCase.MakeDecision,AttestationPolicy.PrepareAttestations, andITShopOrg.MoveBoard. State and method behavior still decide whether a call is valid. - ✅ For any proposed
QBM_PJobCreate_HOFireEvent*call, which(TableName, EventName)row inQBMEventand whichJobEventGen/JobChainrows prove what process work will be generated? → Check(TableName, EventName)inQBMEvent, activeJobEventGen/JobChain, and remember that runtime generation looks forEvent_<EventName>; a catalog row alone is not sufficient proof of generated work. - ✅ How does a Web Portal cart submit relate to object-layer processing and DB/job tables? → Generated Angular API method
portal_cart_submit_postcalls/portal/cart/submit/{uidcart}; live submit insertedPersonWantsOrg, recordedDialogProcess, and queuedJobQueueHandleObjectComponent/CallMethodunder the same GenProcID. - Where is the documented OneIM 10
QBM\DBQueue\MaxSlotsPerTaskconfiguration surfaced in this sandbox, given that the currentDialogConfigParmsnapshot did not return it? - Which negative
QBMDBQueueCurrent.SlotNumbervalues occur during controlled AD sync, IT Shop publish, and ShoppingRack refresh tests in this OneIM 10 sandbox?