Source: projects/identity-management/knowledge-base/oim-it-shop-structure-and-availability.md
> Source: projects/identity-management/knowledge-base/oim-it-shop-structure-and-availability.md
OIM IT Shop (DB) — Struktur & Shop-Verfügbarkeit
Ziel: DB-nahe, sandbox-verifizierte Sicht darauf, wie der IT Shop in One Identity Manager 10 (QER) strukturiert ist und wodurch Entitlements/Service Items im Shop sichtbar werden.
Source Priority / Provenance
1. Live sandbox DB (OneIM) — im.sandbox.local (SQL Server 2022). Beobachtungen/Queries: 2026-04-27.
2. Sandbox host install/MDK material — u.a.:
C:\Dev\OneIdentityManager.10.0\Modules\QER\database\...C:\Dev\OneIM10.0.0-MDK\MDK\OneIM_MDK_DeveloperGuide.pdf
3. Vendor docs — Links + Access-Date unten (noch zu ergänzen/zu verifizieren).
1) ITShopOrg ist ein View auf BaseTree
Live DB evidence
dbo.ITShopOrgist VIEW, keine USER_TABLE.- View-Definition (Kurzform):
from BaseTree where UID_OrgRoot = 'QER-V-ITShopOrg'.
Praktische Konsequenz:
- Die “ITShopOrg-Hierarchie” ist technisch ein Teilbaum in
dbo.BaseTree. - Der Schlüssel
UID_ITShopOrgaus dem View ist identisch zuBaseTree.UID_Org. - Parent/Child:
ITShopOrg.UID_ParentITShopOrg→BaseTree.UID_ParentOrg. - Minimal required columns (DB-level, NOT NULL, no defaults) für jeden
BaseTree-Knoten (inkl. IT-Shop-Knoten):UID_Org,Ident_Org,UID_OrgRoot,XObjectKey.
2) ITShopInfo ist ein BaseTree-Feld (Codes)
Live DB evidence (Auszug): Im Sandbox-Baum kommen u.a. diese Codes vor:
SC(Shopping Center; in shipped Procs/Triggers vorhanden, im Live-Subtree der Sandbox aktuell nicht vorhanden)SH(Shop-Root)BO(Shop-Regal/Board/Shelf-Knoten — “Container”)PR(Product node; hat i.d.R.UID_AccProductgesetzt)CU(Customer-Zuordnungsknoten; spezielle Update-Validierung)
Live DB snapshot (2026-04-27): Im IT-Shop-Teilbaum (UID_OrgRoot='QER-V-ITShopOrg') sind aktuell:
PR: 113BO: 8CU: 1SH: 1
Trigger/Validation evidence
QER_TIBaseTreeenthält u.a. eine Validierung, die das Setzen vonITShopInfoeinschränkt:- Wenn
ITShopInfogesetzt ist, mussUID_OrgRootzuQER-V-ITShopOrgoderQER-V-ITShopSrcpassen (sonstRAISERROR). - Beim Einfügen bestimmter IT-Shop-Knoten (
UID_OrgRoot='QER-V-ITShopOrg'undITShopInfo in ('SC','SH','BO','PR')) werden DBQueue-Aufgaben für “ShoppingRack” getriggert (QER-K-ShoppingRack-All). - Außerdem wird verhindert, dass ein Knoten eingefügt wird, wenn der Predecessor (
UID_ParentOrg) nicht in derselben Role Class (UID_OrgRoot) existiert. QER_TUBaseTreeenthält u.a.:- Wenn ein Knoten bereits
ITShopInfo='CU'hat und Customer-Zuordnungen existieren, ist eine Änderung vonITShopInfoblockiert (RAISERROR).
Details + Belege (live DB + install media):
projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-itshopinfo-validation-and-qer-itshop-config-db-evidence.mdprojects/identity-management/oim-kb-update/sandbox-host/2026-04-27-itshopinfo-and-configparm-file-evidence.mdprojects/identity-management/oim-kb-update/sandbox-db/2026-04-27-itshoporg-columns-and-service-categories-db-evidence.md
3) Shop-Struktur (Sandbox Snapshot)
Live DB evidence (2026-04-27): In der Sandbox existieren aktuell 123 BaseTree-Knoten mit UID_OrgRoot='QER-V-ITShopOrg', davon 113 Product Nodes (ITShopInfo='PR') mit gesetztem UID_AccProduct.
Beobachtetes Muster:
SH→ top-level Shop (in dieser Sandbox ohne vorgelagerten “Shopping Center”-Knoten)BO→ Kategorieregale unter dem ShopPR→ Produkte/Requests unter einemBO
SC (Shopping Center) Hinweis: Shipped QER-Prozeduren/Trigger referenzieren ITShopInfo='SC' explizit als “shopping center” (z.B. Shop-Move und Strukturprüfung), auch wenn im Live-Baum der Sandbox aktuell keine SC-Knoten existieren. Evidence: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-itshopinfo-sc-shopping-center-db-evidence.md.
4) “Shop availability” = Flags + Platzierung + (oft) DBQueue/Procs
In der DB tauchen zwei große Mechanismen auf:
0) Der generische Mechanismus hinter ITShopOrgHas* (wichtig für Troubleshooting)
Live DB evidence (sandbox 2026-04-27): Für viele Entitlement-Typen existiert ein konsistentes Pattern:
- Entitlement-Tabelle
Xhat die FlagsIsForITShop+IsITShopOnly(z.B.ADSGroup,ESet,LDAPGroup,QERResource,QERReuse,UNSGroupB*, …). - Der eigentliche “Placement”-Link in die IT-Shop-Struktur ist ein
BaseTreeHasX-Link (z.B.BaseTreeHasADSGroup,BaseTreeHasESet, …). - Der “IT Shop”-View ist dann fast immer nur ein Filter:
ITShopOrgHasX=BaseTreeHasXrestricted toUID_OrgRoot='QER-V-ITShopOrg'.
Aktueller Sandbox-Status (nur IT-Shop-Subtree gezählt):
BaseTreeHasQERReuse: 10 Rows (Placement vorhanden)BaseTreeHasADSGroup: 194 Rows (Placement vorhanden; AD-Shop-Katalog seeded)BaseTreeHasESet: 0 Rows (noch nichts publiziert)
Beleg (aktuelle Snapshot-Zahlen): projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-itshopinfo-validation-and-qer-itshop-config-db-evidence.md.
ESet (System Roles) Hinweis (Sandbox Snapshot 2026-04-27):
dbo.ESetist in dieser Sandbox aktuell leer (0 Rows), aber die DB-Objekte für Shop-Verfügbarkeit existieren bereits:- Flags:
ESet.IsForITShop+ESet.IsITShopOnly - Service item link:
ESet.UID_AccProduct - Placement:
BaseTreeHasESet(→ ViewITShopOrgHasESet= Filter auf IT-Shop-Subtree) - Flag-Enforcement: Trigger
RMS_TUESetruftQER_PIsForITShopFlagCheck 'ESet', ...auf und prüft zusätzliche Constraints überESetHasEntitlement+ dynamische Entitlement-Tabellen. - Evidence:
projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-eset-it-shop-placement-and-flag-enforcement-db-evidence.md.
A) Requestable “Reuse” Objects (QERReuse) + AccProduct
Live DB evidence
dbo.QERReusehatIsForITShop+IsITShopOnly+UID_AccProduct.- In der Sandbox existieren aktuell 6
QERReuse-Rows; alle habenIsForITShop=1undIsITShopOnly=1. - Diese
QERReuse-Objekte sind im IT-Shop-Baum überBaseTreeHasQERReuseund (redundant)BaseTreeHasObject.ObjectKeyverknüpft: ObjectKeyenthält XML wie<Key><T>QERReuse</T><P>...</P></Key>.- In der Sandbox existieren 10
BaseTreeHasQERReuseRows; diese referenzieren sowohl PR-Knoten (Product Nodes) als auch BO-Knoten (Shelves), d.h. eine Entitlement-Referenz kann an mehreren BaseTree-Knoten hängen.
Zusatzbeobachtung (Sandbox):
- Für mehrere AD-bezogene
QERReuse-Objekte ist das verknüpfteAccProducteiner Service Category zugeordnet (AccProduct.UID_AccProductGroup→Ident_AccProductGroup = 'Active Directory Groups'), für andere (z.B.New manager assignment) istUID_AccProductGroupleer → Service Category wirkt hier wie UI-/Kategorisierungs-Metadatum, nicht wie harte technische Voraussetzung. - Quantifiziert (PR nodes): 7/16
ITShopInfo='PR'-Knoten referenzieren einAccProductohneUID_AccProductGroup. Evidence:projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-itshopinfo-sc-shopping-center-db-evidence.md. - Quantifiziert (PR nodes): 7/16
ITShopInfo='PR'-Knoten referenzieren einAccProductohneUID_AccProductGroup. Evidence:projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-service-categories-and-preprocessor-gates-db-evidence.md. AccProducthat in diesem Schema keinIsForITShop; der einzige “IT Shop visibility”-Flag am Produkt selbst istIsToHideFromITShop(Default0in den Install-Skripten).- “Service Categories” entsprechen (DB-nah)
AccProductGroup: AccProduct.UID_AccProductGroupist optional (nullable).- Snapshot 2026-04-27:
AccProducthatTotalProducts=20undProductsWithCategory=10(UID_AccProductGroupgesetzt). AccProductGroup.FullPathbildet die Kategorie-Hierarchie (z.B.Active Directory Groups\\Security Groups).- Transitive Category-Hierarchie (für “cascading” Updates/Refresh):
AccProductGroupCollectionist eine Closure-/Collection-Tabelle (Parent↔Child inkl. Self-Row,LevelNumber).QER_VACCProductGroupCollectionliefert (UID_ACCProductGroup, UID_AccProductGroupParent, CountSteps) und wird u.a. in Triggern genutzt.QER_TUAccProductenqueuedQER-K-ShoppingRackProductNodewennUID_AccProductGroupgeändert wird (Refresh von PR-Knoten viaBaseTree.UID_AccProduct).QER_TUAccProductGroupenqueued sowohlQER-K-AccProductGroupCollection(Closure-Refresh) als auchQER-K-ShoppingRackProductNodebei Category-Tree/Method-Änderungen.
B) “Direct entitlement tables” mit IsForITShop / IsITShopOnly
Live DB evidence
Spalten mit IT-Shop-Flags existieren u.a. in:
ADSGroup(AD-Gruppen):IsForITShop,IsITShopOnly(Sandbox 2026-04-27: 97 Rows mitIsForITShop=1, 0 mitIsITShopOnly=1; exakt 97 Rows haben auchUID_AccProductgesetzt)ESet(System Roles):IsForITShop,IsITShopOnly(in der Sandbox aktuell 0 Rows; Tabelle leer)LDAPGroup:IsForITShop,IsITShopOnlyQERAssign,QERResource,QERReuse,RPSReport,TSBAccountDef,UNSGroupB*, …
Hinweis (Sandbox 2026-04-27): BaseTreeHasADSGroup existiert und hat 385 Rows, davon 194 im IT-Shop-Teilbaum (BaseTree.UID_OrgRoot='QER-V-ITShopOrg'). Die View ITShopOrgHasADSGroup enthält ebenfalls 194 Rows (Placement-Evidence).
Wichtiges Detail (Sandbox 2026-04-27): Nach erfolgter Publikation enthält BaseTreeHasADSGroup in dieser Umgebung pro AD-Gruppe typischerweise zwei Links innerhalb des IT-Shop-Teilbaums:
- ein Link auf das BO-Regal (
BaseTree.ITShopInfo='BO') als “Shelf assignment” - ein Link auf den PR-Produktknoten (
BaseTree.ITShopInfo='PR') nach ShoppingRack/ProductNode-Erzeugung
Evidenz: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-basetreehasadsgroup-pr-links-and-basetreehasobject-evidence.md.
Configuration Parameter: QER\ITShop\AutoPublish\ADSGroup (Auto-Veröffentlichung vs. manuelle Publikation)
Live DB evidence (DialogConfigParm)
In dieser Sandbox ist Auto-Publish für ADSGroup derzeit deaktiviert:
QER\ITShop\AutoPublish→Value=1,Enabled=1QER\ITShop\AutoPublish\ADSGroup→Value=1,Enabled=0QER\ITShop\AutoPublish\ADSGroup\AutoFillDisplayName→Value=1,Enabled=0QER\ITShop\AutoPublish\ADSGroup\ExcludeList→Enabled=1(enthält Regex; z.B..*Administrator.*|...)
Zusatzbeobachtungen (wichtig für “supported path”):
QER\ITShop\AutoPublish\ADSGroupist preprocessor-relevant (DialogConfigParm.IsPreprocessorCondition=1).- Der Parametertext (live
DialogConfigParm.Description) sagt explizit: “Changes to the parameter require recompiling the database.” Enabledwirkt nicht direkt, sondern überDialogConfigParm.IsEnabledResulting(inkl. Parent-Enablement).- In der Sandbox ist z.B.
ExcludeListzwarEnabled=1, aberIsEnabledResulting=0, weil...ADSGroupals Parent deaktiviert ist. - Der DB-seitige Getter
dbo.QBM_FGIConfigparmValue(@FullPath)liefertValuenur dann zurück, wennIsEnabledResulting=1ist (sonst leere Zeichenkette). - Zusätzlich existiert das Konzept “IT Shop Source” (
ITShopSrc*), ist in dieser Sandbox aber per Preprocessor deaktiviert: DialogTable.TableName='ITShopSrcHasADSGroup'hatPreProcessorCondition='ITSHOPSOURCE'undIsDeactivatedByPreProcessor=1.- Konsequenz: die View
dbo.ITShopSrcHasADSGroupist “wegkompiliert” (Definition:where 1 = 0) und liefert immer 0 Rows. - Die normale IT-Shop-Variante
dbo.ITShopOrgHasADSGroup(PreProcessorCondition=ITSHOP) ist aktiv und hat in der Sandbox aktuell 194 Rows.
Das passt konsistent zu den Beobachtungen (Sandbox 2026-04-27):
- Trotz deaktiviertem Auto-Publish-Parameter existieren AD-Gruppen, die als IT-Shop-Entitlements vorbereitet wurden (
ADSGroup.IsForITShop=1) und mit Service Items verknüpft sind (ADSGroup.UID_AccProductgesetzt). Das spricht für eine manuelle/seeding-basierte Veröffentlichung, nicht für “AutoPublish”. ADSGroup.DisplayNameist in diesen seeded Rows aktuell oftNULL(konsistent damit, dassQER\ITShop\AutoPublish\ADSGroup\AutoFillDisplayNameals Parameter nicht resulting-enabled ist).
Flag enforcement (Trigger/Procs)
Live DB evidence
ADS_TUAdsGroupreagiert auf Updates vonADSGroup.IsForITShop/IsITShopOnlyund ruftQER_PIsForITShopFlagCheck('AdsGroup', ...)auf (inkl. Child-Checks wieADSAccountInADSGroup|ADSMachineInADSGroup).QER_PIsForITShopFlagCheckwirft u.a. einen Fehler, wennIsForITShop=0undIsITShopOnly=1(ungültige Kombination), und prüft zusätzlich Konsistenz zu BaseTree/Shop-Zuordnungen.- Für System Roles und Entitlement-Zuordnungen greifen Trigger auf
QER_FGIITShopFlagCombineValid(...)zurück und blockieren ungültige Flag-Kombinationen mitRAISERROR(“Assignment is not permitted due to the combination of IT Shop flags”).
C) Platzierung von Service Items im IT Shop (Sandbox-Befund)
Live DB evidence
AccProductInBaseTreeist in dieser Sandbox leer (COUNT(*) = 0).- Der View
AccProductInITShopOrgliest ausschließlich ausAccProductInBaseTree, filtert dann aufBaseTree.UID_OrgRoot='QER-V-ITShopOrg'→ liefert damit hier 0 Rows. - Der View
ITShopOrgHasADSGroupist “nur”BaseTreeHasADSGroup+exists(BaseTree.UID_OrgRoot='QER-V-ITShopOrg')(keinITShopInfo-Filter). - Gute
exists-Abfrage für irgendeinen IT-Shop-Link (BO-Regal *oder* PR-Produktknoten). - Für die konkrete Frage “liegt die Gruppe auf einem BO-Regal?” zusätzlich auf
BaseTree.ITShopInfo='BO'einschränken (sonst zählt auch der PR-Link mit). - Es existiert kein passender DBQueue-Task in
QBMDBQueueTask(keinUID_TaskmitAccProductInBaseTree), obwohl mehrere Views davon abhängen. AccProductInBaseTreehat mindestens einen generischen Trigger (z.B.GEN_T3EE3D...), dessen Prefix nur Simulation-/Session-Handling zeigt (kein offensichtliches ShoppingRack/Fill-Enqueue in den ersten ~1800 Zeichen).- Trotzdem existieren
BaseTree-Product Nodes mitITShopInfo='PR'und gesetztemBaseTree.UID_AccProduct(im IT-Shop-Teilbaum aktuell 113). BaseTreeHasObjectenthält in dieser Sandbox keineAccProduct-ObjectKeys.
Interpretation (sandbox-spezifisch): In diesem Environment scheint die “Zuordnung Produkt ↔ IT Shop Product Node” primär über BaseTree (PR-Knoten + UID_AccProduct) und “BaseTreeHas<EntitlementType>” Tabellen zu laufen; AccProductInBaseTree wirkt aktuell wie eine ungenutzte/legacy Mapping-Tabelle.
Cross-reference (live DB, 2026-04-27): projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-service-categories-and-accproductinbasetree-db-evidence.md und projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-accproductinbasetree-views-and-trigger-hooks-db-evidence.md.
5) Welche Entitlement-Typen sind “IT-Shop enabled”? → BaseTreeAssign
Live DB evidence
dbo.BaseTreeAssign wirkt wie die “Feature-Matrix”, welche Objekt-/Entitlement-Typen grundsätzlich in Rollen/Organisationen (und damit auch IT Shop) unterstützt werden:
- Für mehrere
UID_DialogTableElementistIsITShopEnabled=1gesetzt (Sandbox: 13 Typen), u.a.: ADSGroup(AD Gruppen)ESet(Systemrollen; in dieser Sandbox istdbo.ESetleer)LDAPGroup(LDAP Gruppen)QERAssign,QERResource,QERReuse,QERReuseUSRPSReport(Reports)TSBAccountDef(Account Definitions)UNSGroupB,UNSGroupB1,UNSGroupB2,UNSGroupB3(UNS/TargetSystem-Group Typen)
Wichtiges Detail (Sandbox-Schema): BaseTreeAssign enthält nicht direkt TableName, sondern UID_DialogTableElement / UID_DialogTableMN, die in dieser Umgebung auf dbo.DialogTable.UID_DialogTable zeigen. Das ist der stabile Join, um die “Entitlement-Tabelle” und die zugehörige BaseTreeHas<type>-MN-Tabelle zu ermitteln:
SELECT dt.TableName, dtmn.TableName AS MNTable, bta.IsITShopEnabled, bta.IsReusePossible
FROM dbo.BaseTreeAssign bta
JOIN dbo.DialogTable dt ON dt.UID_DialogTable = bta.UID_DialogTableElement
LEFT JOIN dbo.DialogTable dtmn ON dtmn.UID_DialogTable = bta.UID_DialogTableMN
WHERE bta.IsITShopEnabled = 1
ORDER BY dt.TableName;
Cross-reference (live DB evidence, 2026-04-27): projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-it-shop-enabled-types-and-availability-joins-db-evidence.md.
6) Product node creation: QER_PITShopProductNodeCreate(_b)
Live DB evidence
- Prozeduren vorhanden:
QER_PITShopProductNodeCreateundQER_PITShopProductNodeCreate_b. - In
..._bsieht man u.a.: UID_OrgRoot = 'QER-V-ITShopOrg'undITShopInfo='PR'(PR-Knoten werden inBaseTreeerzeugt).- Die Prozedur nimmt
ObjectKey-Elemente (Entitlement-Objekte) entgegen und legt mindestensBaseTreeHasObjectfür PR-Knoten an. - String-Suche/Code-Inspection in dieser Sandbox zeigt: keine Referenz auf
AccProductInBaseTreeinQER_PITShopProductNodeCreate_b. - Shipped SQL (QER):
QER_PITShopProductNodeCreatesetztBaseTree.ITShopInfo='PR'undBaseTree.UID_AccProduct=<service item>und fülltUID_PWODecisionMethodu.a. ausAccProduct/AccProductGroup/PWOHelperBoardMethod(siehe Host-Evidence).
Konkrete Mechanik (aus QER_PITShopProductNodeCreate_b + BaseTreeAssign)
In dieser Sandbox wirkt die “Shop-Verfügbarkeit” (pro Entitlement-Typ) als Kette:
1. BaseTreeAssign.IsITShopEnabled=1 bestimmt, welche Entitlement-Tabellen überhaupt über ITShopOrg/Rollen/Org-Strukturen zuweisbar sind *und* welche MN-Tabelle (BaseTreeHas<type>) verwendet wird (z.B. ADSGroup → BaseTreeHasADSGroup).
2. Wenn ein Entitlement einem BO-Shelf zugewiesen ist (Eintrag in BaseTreeHas<type> mit UID_Org=<BO shelf UID>), sorgt die ShoppingRack/NodeCheck-Logik für PR-Knoten:
- Shipped SQL:
QER_PITShopProductNodeCheckiteriert (dynamisch) über alleBaseTreeHas<type>Tabellen ausBaseTreeAssignund ruftQER_PITShopProductNodeCreate_bfür fehlende PR-Knoten auf (Host-Evidence). - PR-Knoten =
BaseTree-Row unter dem BO-Shelf (ITShopInfo='PR'), plusXObjectKey/Metadaten. BaseTreeHasObjectwird für PR-Knoten mit dem Entitlement-ObjectKeybefüllt (Shipped SQL).
3. ITShopOrg.UID_AccProduct wird (für PR-Knoten) über QBM_PJobCreate_HOUpdate gesetzt, basierend auf UID_ACCProduct, das aus dem Entitlement-Datensatz gelesen wird (z.B. ADSGroup.UID_AccProduct).
4. Änderungen an AccProduct.UID_AccProductGroup/UID_PWODecisionMethod führen über Trigger (QER_TUAccProduct) zu QER-K-ShoppingRackProductNode DBQueue-Tasks, die PR-Knoten “refreshen”.
Cross-reference (DB + host evidence, 2026-04-27):
projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-itshop-productnode-jobcreate-and-dbqueueinsert-db-evidence.mdprojects/identity-management/oim-kb-update/sandbox-host/2026-04-27-itshop-productnode-jobcreate-and-dbqueueinsert-file-evidence.mdprojects/identity-management/oim-kb-update/sandbox-db/2026-04-27-it-shop-enabled-types-and-availability-joins-db-evidence.mdprojects/identity-management/oim-kb-update/sandbox-host/2026-04-27-itshop-productnodecheck-and-prnodecreate-shipped-sql-evidence.md
Implikation für AutoPublish/Supported Paths:
- AutoPublish muss mindestens zwei Dinge herstellen, bevor ein Entitlement im Shop erscheint:
Entitlement.UID_AccProductist gesetzt (undAccProductexistiert).- Entitlement ist einem BO-Shelf zugewiesen (
BaseTreeHas<type>Row); erst dann kann ShoppingRack PR-Knoten erzeugen.
7) DBQueue / ShoppingRack Tasks (Troubleshooting Entry Point)
Live DB evidence
In dbo.QBMDBQueueTask existieren u.a. folgende Tasks, die im IT-Shop-Kontext auffallen:
QER-K-ShoppingRack-All→QER_ZITShopCheckStructureQER-K-ITShopCheck→QER_ZITShopCheck- mehrere
QER-K-ShoppingRack*Tasks für Decision/Valid/Waiting/Helper Fill
Zusatz (live DB evidence, 2026-04-27): In dieser Sandbox sind die meisten QER-K-ShoppingRack* Tasks als bulk-enabled modelliert (QBMDBQueueTask.IsBulkEnabled=1), und Trigger/Prozeduren entscheiden je nach “Load” auch zwischen QBM_PDBQueueInsert_Bulk und QBM_PDBQueueInsert_Single (z.B. ADS_TUAdsGroup).
Hinweis (Sandbox-DB-Schema): QBMDBQueueTask ist primär über UID_Task (z.B. QER-K-ShoppingRack-All) + ProcedureName modelliert; eine separate “TaskName”-Spalte gibt es hier nicht. Für ein Queue-Status-Signal eignet sich z.B. QBM_VDBQueueContent (Aggregat/Metric pro UID_Task).
Zusätzliche Live-Evidence (Task-Details + Reihenfolge): QER-K-ShoppingRackProductNode (QER_ZITShopCheckMethodPR) hat ein eingebautes QueryForRecalculate (… where itshopinfo = N'PR') und ist in dbo.QBMDBQueueTaskDepend u.a. von QER-K-AccProductGroupCollection und QER-K-ShoppingRackMethod abhängig.
Service-Category-Relevanz (shipped SQL, sandbox host): QER_ZITShopCheckMethodPR ruft QER_FTMethodForPRNode auf, welches BaseTree.UID_PWODecisionMethod für PR-Knoten über eine Prioritätskette füllt — u.a. via AccProduct.UID_PWODecisionMethod und über die AccProductGroup Parent-Chain (QER_VACCProductGroupCollection). D.h. AccProductGroup ist in diesem Environment weniger “Availability Gate”, aber kann Entscheidungsmethode/Approval-Logik beeinflussen.
Live DB evidence (sandbox 2026-04-27): Von 16 existierenden PR-Nodes haben 7 AccProduct.UID_AccProductGroup = NULL, aber trotzdem einen PR-Knoten (und BaseTree.UID_PWODecisionMethod ist für alle 16 gesetzt). Details: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-service-categories-and-preprocessor-gates-db-evidence.md.
Cross-reference: DBQueue insert procedures, current OneIM 10 negative SlotNumber meanings, and QBM_PJobCreate* object-layer job creation are now tracked in DBQueue and Object Layer Jobs. For 9.3+ / V10 troubleshooting, prefer that note and the One Identity 10.0 Configuration Guide over older training-slide slot-control examples.
Wenn Shop-Knoten oder Shop-Zuordnungen “hängen”, ist das ein guter Startpunkt:
1. DialogDBQueue nach UID_Task LIKE '%ShoppingRack%' / %ITShop%
2. Passende Prozeduren aus QER_ZITShop* prüfen
3. Trigger auf BaseTree (QER_TIBaseTree, QER_TUBaseTree) berücksichtigen
8) Minimale Sequenz: ein synced ADSGroup im IT Shop publikieren (DB-Ebene)
Live DB evidence (2026-04-27, Claude run)
Vollständige Analyse basierend auf ADS_TUAdsGroup Trigger, QER_PIsForITShopFlagCheck Prozedur, ITShopOrgHasADSGroup View-Definition und Spalten-Schema aller beteiligten Tabellen.
Details + konkrete SQL-Statements in projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-adsgroup-publish-sequence-db-evidence.md.
Supported (Object-Layer) Einstiegspunkt: ITShopOrg via SDK ScriptSamples
Neben der “DB-Ebene” (direkte DML nur zum Verständnis) gibt es shipped SDK-Beispiele, die den supported Weg über die Object Layer / Entity API zeigen:
- Sandbox host evidence:
projects/identity-management/oim-kb-update/sandbox-host/2026-04-27-sdk-scripts-itshoporg.md - ScriptSamples (OIM SDK auf der VM):
C:\Dev\OneIdentityManager.10.0\Modules\QBM\dvd\AddOn\SDK\ScriptSamples\08 ITShop\01 Create ITShop.vbC:\Dev\OneIdentityManager.10.0\Modules\QBM\dvd\AddOn\SDK\ScriptSamples\08 ITShop\03 Remove ITShop.vb
Das Create-Sample erzeugt (in einer Object-Layer Transaction) einen Shop (ITShopInfo='SH') plus Customer-Node (ITShopInfo='CU') und setzt dabei u.a.:
UID_OrgRoot='QER-V-ITShopOrg', Ident_Org=<shopName>, UID_ParentITShopOrg=<shopUID>.
AccProduct — Minimum INSERT
Nur 2 Spalten sind NOT NULL ohne Default:
UID_AccProduct(varchar 38)XObjectKey(varchar 138) — Format:<Key><T>AccProduct</T><P>{UID}</P></Key>
Alle 55 anderen Spalten nullable oder mit Default ((0)). Ident_AccProduct ist nullable
aber praktisch nötig (Anzeigename). UID_AccProductGroup optional (nullable).
BaseTreeHasADSGroup — Minimum INSERT
Required (NOT NULL):
UID_Org(varchar 38) — UID des BO-RegalsUID_ADSGroup(varchar 38)XObjectKey(varchar 138) — für IT-Shop-Regalzuweisungen sollte der View-Table-Discriminator verwendet werden:
<Key><T>ITShopOrgHasADSGroup</T><P>{UID_ADSGroup}</P><P>{UID_ITShopOrg}</P></Key>.
Nicht-IT-Shop-Zuweisungen nutzen entsprechend andere View-Table-Namen wie OrgHasADSGroup oder DepartmentHasADSGroup.
ITShopOrgHasADSGroup
View über BaseTreeHasADSGroup gefiltert auf BaseTree.UID_OrgRoot='QER-V-ITShopOrg'.
Zeigt sofort nach dem INSERT in BaseTreeHasADSGroup (wenn UID_Org im IT-Shop-Teilbaum).
ADS_TUAdsGroup — relevante Abschnitte
IsForITShop/IsITShopOnlyÄnderung → ruftQER_PIsForITShopFlagCheck('AdsGroup', ...)
mit Child-Tables ADSAccountInADSGroup|ADSMachineInADSGroup auf.
- Zusätzlich (shipped trigger evidence):
IsITShopOnly=1ist nicht erlaubt, wenn die Gruppe gleichzeitig als Primary Group verwendet wird (ADSAccount.UID_ADSGroupPrimary). UID_AccProductÄnderung → ruftQBM_PJobCreate_HOUpdate_B 'ITShopOrg'auf,
um vorhandene PR-Knoten auf das neue AccProduct zu aktualisieren.
- Zusätzlich (trigger evidence, sandbox 2026-04-27): der Triggerpfad für
UID_AccProductprüftDialogColumn.IsDeactivatedByPreProcessor = 0fürQER-T-ITShopOrg.UID_AccProduct— ein Hinweis, dass Preprocessor-Flags Triggerlogik (teilweise) “abschalten” können. Details:projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-service-categories-and-preprocessor-gates-db-evidence.md.
QER_PIsForITShopFlagCheck — Validierungsregeln
Schlägt fehl wenn:
1. IsForITShop=0, IsITShopOnly=0 UND ADSGroup ist via BaseTreeHasADSGroup einem
IT-Shop-Knoten (XObjectKey LIKE '<Key><T>ITShop___</T>%') mit XOrigin>0 zugeordnet.
2. IsForITShop=1, IsITShopOnly=1 UND ADSGroup ist auch einem Nicht-IT-Shop-Knoten zugeordnet.
3. Kinder (ADSAccountInADSGroup, ADSMachineInADSGroup) existieren mit XOrigin>0 und
IsITShopOnly=1 auf der Gruppe.
4. Ressourcen werden auf “Package”/ESet-Ebene außerhalb des IT Shop verwendet: ESetHasEntitlement + BaseTreeHasESet zeigen einen Assignment-Pfad auf BaseTree.UID_OrgRoot NOT IN ('QER-V-ITShopOrg', 'QER-V-ITShopSrc'), während IsITShopOnly=1 gesetzt werden soll.
5. IsForITShop=1, IsITShopOnly=1 soll gesetzt werden, aber es existieren Assignments zu System Roles (ESetHasEntitlement) deren ESet.IsITShopOnly = 0 ist.
Kein Fehler wenn noch keine BaseTreeHasADSGroup-Einträge existieren → IsForITShop=1 ist
before der Shelf-Zuweisung setzbar.
Seeded Sandbox BO-Regale (live DB, 2026-04-27)
| Regal | UID_Org | AccProductGroup |
|---|---|---|
| Sandbox Applications | SBX-ITS-5C7F1AC9D4A34DBBB23EA107B77C18 | SBX-APG-18479F84C2374DD3B31FD4DDE8B45A |
| Sandbox Business Roles | SBX-ITS-415A0CE25B8545DB907EDB55A4CB82 | SBX-APG-B36C891B92E94E0DB8A579C8483B6A |
| Sandbox Distribution Lists | SBX-ITS-4266537524A5448A8C9E3484608D8A | SBX-APG-50DA5741B2744380A37CB4105D189B |
| Sandbox System Role Bundles | SBX-ITS-E4B74F41569A487580B4C65E73AA86 | SBX-APG-528C6FE7956945E3B5830F6858649C |
5-Schritte-Sequenz (direkte DML, nur zum Verständnis)
| Schritt | SQL-Ziel | Trigger-Folge |
|---|---|---|
1. INSERT AccProduct | UID + XObjectKey + Ident_AccProduct + UID_AccProductGroup | Trigger auf AccProduct; kein IT-Shop-Effekt |
2. UPDATE ADSGroup SET UID_AccProduct | Link zum neuen AccProduct | ADS_TUAdsGroup → QBM_PJobCreate_HOUpdate_B (kein Effekt, noch kein PR-Node) |
3. UPDATE ADSGroup SET IsForITShop=1 | IT-Shop-Flag | ADS_TUAdsGroup → QER_PIsForITShopFlagCheck (passiert ohne Fehler, da noch kein BaseTreeHasADSGroup) |
4. INSERT BaseTreeHasADSGroup (BO-Regal) | Shelf-Zuweisung | Insert-Trigger; ITShopOrgHasADSGroup zeigt Eintrag sofort |
5. DBQueue QER-K-ShoppingRack-All / QER-K-ShoppingRackProductNode | — | QER_PITShopProductNodeCreate_b erzeugt PR-Node + BaseTreeHasObject |
Reihenfolge-Constraints:
- Schritt 1 muss vor Schritt 2 (FK:
ADSGroup.UID_AccProduct → AccProduct) - Schritt 2 muss vor Schritt 5 (
QER_PITShopProductNodeCreate_bliestADSGroup.UID_AccProduct) - Schritt 4 muss vor Schritt 5 (Shelf-Eintrag auslöst PR-Node-Erstellung)
Angewandter Sandbox-Stand: AD-Shop-Katalog veröffentlicht (2026-04-27)
Evidence: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-ad-shop-itshop-publication.md
Ergebnis im v10-Sandbox-DB-Stand:
| Objekt/Relation | Count | Hinweis |
|---|---|---|
Catalog-backed AccProduct service items | 97 | Marker [OIM-SANDBOX-SEED:ad-shop-seeding:v1] |
ADSGroup mit IsForITShop=1 | 97 | IsITShopOnly=0, weil v1 nicht exklusiv über IT Shop vergeben werden soll |
ADSGroup.UID_AccProduct Links | 97 | 1 Service Item pro gesyncter AD-Gruppe |
BaseTreeHasADSGroup Shelf-Zuweisungen | 97 | Auf vier Sandbox-BO-Regale verteilt |
ITShopOrg Product Nodes (ITShopInfo='PR') | 97 | Durch Product-Node-Verarbeitung nach Commit erzeugt |
Verteilung der Product Nodes:
| Regal | PR-Knoten |
|---|---|
| Sandbox Applications | 75 |
| Sandbox Business Roles | 9 |
| Sandbox System Role Bundles | 10 |
| Sandbox Distribution Lists | 3 |
Approval Policy:
PWODecisionMethod:Approval of AD group membership requests- UID:
ADS-625C7339178444AD9FBC0A8A7EC3901B - gesetzt auf alle 97
AccProductrows, die vierAccProductGroupcategories und die vier BO-Regale.
Wichtige Korrektur aus diesem Lauf: Die v10-Sandbox-AccProduct Tabelle hat keine Spalte ServiceItem.
Die produktrelevanten Informationen liegen in Ident_AccProduct, Description, ArticleCode/OrderNumber,
UID_AccProductGroup, UID_PWODecisionMethod, und den Metadata-Feldern CustomProperty01..03.
Open Questions / Next Experiments
- Warum bleibt
AccProductInBaseTreeim Sandbox-DB-Stand leer, obwohlBaseTreeProduct NodesUID_AccProducttragen und die Install-Medien weiterhinAccProductInITShopOrgViews aufAccProductInBaseTreemitliefern? (Legacy? Feature-Flag? Ein fehlender “Fill job”?) - Welche
QBM_PJobCreate*-Varianten sind am Product-Node-Flow beteiligt (insbesondereQER_PITShopProductNodeCreate_b/ ShoppingRack), und welche Änderungen werden bewusst über den Objektlayer statt direkt per SQL ausgeführt? (Teilweise beantwortet:...Create_bruftQBM_PJobCreate_HOUpdate; mehrere shippedQER_ZITShop*Prozeduren nutzenQBM_PJobCreate_HOCallMethod*/...HOFireEvent*und enqueuen ShoppingRack Tasks perQBM_PDBQueueInsert_*— Details siehe neue Evidence Notes.) - Minimaler “safe” Testfall (supported path):
QER\ITShop\AutoPublish\ADSGroupaktivieren, dann eine frisch synchronisierte AD-Gruppe (nicht inExcludeList) publishen → beobachten, obADSGroup.IsForITShop/IsITShopOnly,ADSGroup.UID_AccProduct,AccProduct, undBaseTreeHasADSGroup/Product Nodes entstehen. - Portal-Verhalten von
AccProduct.IsToHideFromITShop: in der Sandbox sind aktuell alleAccProduct.IsToHideFromITShop=0und DB-seitig referenziert kein Shop-Proc/Trigger diese Spalte → Verifikation vermutlich nur über Web Portal/UI oder einen kontrollierten Sandbox-Test möglich. - MDK/SDK-Hinweis: In MDK-
MMM-Procs tauchenITShopInfoCodesBG/BTauf; im Live-Sandbox-DB-Stand existieren jedoch 0BaseTreeRows mitITShopInfo IN ('BG','BT')→ in dieser Sandbox (QER-IT-Shop) aktuell nicht relevant. - MDK/SDK-Hinweis: In MDK-
MMM-Procs tauchenITShopInfoCodesBG/BTauf (z.B.C:\\Dev\\OneIM10.0.0-MDK\\MDK\\MMM\\Database\\MSSQL\\040Procedures\\MMM_ZBaseTreeHasGroup.sqlund...\\MMM_ZBaseTreeHasObject.sql); im Live-Sandbox-DB-Stand existieren jedoch 0BaseTreeRows mitITShopInfo IN ('BG','BT')→ in dieser Sandbox (QER-IT-Shop) aktuell nicht relevant.
Vendor docs (to verify + cite)
- One Identity Manager 10.0 LTS technical documents index (official): https://support.oneidentity.com/identity-manager/10.0%20lts/technical-documents (Accessed: 2026-04-27)
- One Identity Manager 10.0 IT Shop Administration Guide (PDF, official): https://support.oneidentity.com/it-it/download/downloads?id=6144476 (Accessed: 2026-04-27)
- One Identity Manager 10.0 System roles (PDF, official): https://support.oneidentity.com/it-it/download/downloads?id=6144489 (Accessed: 2026-04-27)
- One Identity Manager 9.1.1 IT Shop Administration Guide (PDF): *Appendix: Configuration parameters for the IT Shop* — listet
QER | ITShop | AutoPublish | ADSGroupinkl.ExcludeList(Regex) undAutoFillDisplayName, inkl. Hinweis “Changes to this parameter require the database to be recompiled.” Source: https://support-public.cfm.quest.com/68426_OneIM_ITShop_Administration.pdf (Accessed: 2026-04-27) - One Identity Manager 9.0 LTS IT Shop Administration Guide (PDF): beschreibt Service-Katalog/Service Categories und nennt
AccProductGroupals Table für Service Categories (z.B. “references whose type references the AccProductGroup table can be assigned.”). Source: https://docs-be.oneidentity.com/bundle/OneIM_9.0LTS_ITShop_Administration/raw/resource/enus/OneIM_9.0LTS_ITShop_Administration.pdf (Accessed: 2026-04-27)
- Identity Manager 9.2.1 IT Shop Administration Guide (Web): *Assigning requestable products to shelves* — nennt explizit: nur Company Resources “labeled with the IT Shop option” und “to which a service item is assigned” sind als Produkte auf Regalen selektierbar. Source: https://support.oneidentity.com/technical-documents/identity-manager/9.2.1/it-shop-administration-guide/54#TOPIC-2206225 (Accessed: 2026-04-27)
- Identity Manager 9.0 LTS IT Shop Administration Guide (Web): beschreibt das Aktivieren des IT Shop über den Designer (
QER | ITSHOPconfiguration parameter) und nennt “compile the database” als notwendigen Schritt. Source: https://support.oneidentity.com/it-it/technical-documents/identity-manager/9.0-lts/it-shop-administration-guide (Accessed: 2026-04-27)
- One Identity Manager 10.0 IT Shop Administration Guide (PDF): enthält u.a. eine Liste der IT-Shop-Konfigurationsparameter inkl.
QER | ITShop | AutoPublish | ADSGroup/ExcludeList/AutoFillDisplayName. Source: https://support-public.cfm.quest.com/82111_one-identity-manager_it-shop-administration_10.0.pdf (Accessed: 2026-04-27) - One Identity Manager 10.0 IT Shop Administration Guide (PDF, alternative official download endpoint aus der 10.0 LTS “technical documents” Liste). Source: https://support.oneidentity.com/it-it/download/downloads?id=6144476 (Accessed: 2026-04-27)
- One Identity Manager 10.0 IT Shop Administration Guide (PDF): beschreibt bei preprocessor-relevanten Parametern explizit “compile the database”; außerdem Hinweis: wenn der Parameter später deaktiviert wird, werden “model components and scripts” deaktiviert, SQL procedures and triggers are still carried out (relevant für Troubleshooting/Expectations bei Conditional Compilation). Source: https://support-public.cfm.quest.com/82111_one-identity-manager_it-shop-administration_10.0.pdf (Accessed: 2026-04-27)
- One Identity Manager 10.0 IT Shop Administration Guide (PDF): *Preparing products for requesting* listet die minimalen UI-Voraussetzungen, damit Company Resources im Web Portal requestable sind: IT Shop option gesetzt, service item zugewiesen, als Produkt einem Shelf zugewiesen; wenn nur via IT Shop zuweisbar: zusätzlich Only use in IT Shop. Source: https://support-public.cfm.quest.com/82111_one-identity-manager_it-shop-administration_10.0.pdf (Accessed: 2026-04-27)
- One Identity Manager 10.0 IT Shop Administration Guide (PDF): beschreibt “shopping centers” als Gruppierungsebene über Shops (Shop kann top-level sein oder einem Shopping Center zugeordnet werden) und nennt explizit “shopping center templates” im Shelf-Template-Kontext. Source: https://support-public.cfm.quest.com/82111_one-identity-manager_it-shop-administration_10.0.pdf (Accessed: 2026-04-27)
- One Identity Manager 10.0 Administration Guide for One Identity Active Roles Integration (PDF): enthält eine übersichtliche Tabelle der AD-spezifischen Parameter, inkl.
QER | ITShop | AutoPublish | ADSGroupund dem Hinweis “Changes to this parameter require the database to be recompiled.” Source: https://support-public.cfm.quest.com/82084_one-identity-manager_active-roles-integration_10.0.pdf (Accessed: 2026-04-27) - One Identity Manager 10.0 Administration Guide for Connecting to Active Directory (PDF): liefert AD-spezifischen Kontext (u.a. “service item”/IT Shop Bezug in ADSGroup-Umfeld) und verweist typischerweise auf Standardprodukte/Workflows. Source: https://support-public.cfm.quest.com/82083_one-identity-manager_connecting-to-active-directory_10.0.pdf (Accessed: 2026-04-27)
- IT Shop Admin Guide (9.0 LTS): *Configuration parameters for the IT Shop* — listet
QER | ITShop | AutoPublish | ADSGroupinkl.ExcludeList(Regex) undAutoFillDisplayName, inkl. Hinweis “Changes to this parameter require the database to be recompiled.” Source: https://support.oneidentity.com/technical-documents/identity-manager/9.0%20lts/it-shop-administration-guide/configuration-parameters-for-the-it-shop (Accessed: 2026-04-27) - IT Shop Admin Guide (9.1.1): *Adding system entitlements automatically to the IT Shop* — beschreibt den Ablauf “Service item bestimmen/erstellen → Default service category → product owner role → IT Shop flag + shelf assignment”, und explizit “Compile the database.” für AutoPublish Parameter. Source: https://support.oneidentity.com/technical-documents/identity-manager/9.1.1/it-shop-administration-guide/setting-up-an-it-shop-solution/adding-system-entitlements-automatically-to-the-it-shop (Accessed: 2026-04-27)
- IT Shop Admin Guide (9.0 LTS): *Assigning products to shelves* — beschreibt, dass der DBQueue Processor (Inheritance + subsequent post-processing) pro zugewiesenem Produkt einen Product Node erzeugt und dass die Anzahl pro Run über
QER | ITShop | LimitOfNodeCheckbegrenzt werden kann (Default: 500). Source: https://support.oneidentity.com/technical-documents/identity-manager/9.0%20lts/it-shop-administration-guide/setting-up-an-it-shop-solution/assigning-and-removing-products/assigning-products-to-shelves (Accessed: 2026-04-27) - IT Shop Admin Guide (9.2.1): *Assigning requestable products to shelves* — nennt als UI-Voraussetzung, dass die Tasks nur angezeigt werden, wenn Assignments permitted und Direct assignment permitted für die IT-Shop-Structure-Role-Class aktiviert sind. Source: https://support.oneidentity.com/technical-documents/identity-manager/9.2.1/it-shop-administration-guide/managing-an-it-shop/setting-up-a-customer-node/adding-customer-nodes (Accessed: 2026-04-27)
- IT Shop Admin Guide (8.2): *Implementing the IT Shop* — erwähnt den globalen Enablement-Schalter
QER | ITSHOP(Designer + Compile), und dass DBQueue Processor durch Shop-Kundenberechnung belastet werden kann. Source: https://support.oneidentity.com/technical-documents/identity-manager/8.2/it-shop-administration-guide (Accessed: 2026-04-27) - Configuration Guide (9.2.1): *Preprocessor-relevant configuration parameters* — betont, dass Änderungen an preprocessor-relevanten Parametern erst nach DB-Recompile wirksam werden. Source: https://support.oneidentity.com/technical-documents/identity-manager/9.2.1/configuration-guide/conditional-compilation-using-preprocessor-conditions/preprocessor-conditions-in-vb-net-expressions (Accessed: 2026-04-27)
- Operational Guide (9.1.3): *Compiling a database with the Database Compiler* — fasst zusammen, dass nach Änderungen (inkl. preprocessor-relevanter Konfigurationsparameter) die DB kompiliert werden muss. Source: https://support.oneidentity.com/technical-documents/identity-manager/9.1.3/operational-guide/compiling-a-one-identity-manager-database/compiling-a-database-with-the-database-compiler (Accessed: 2026-04-27)
- Configuration Guide (9.1.3): *Database views of the view type* — erklärt das Schema-Prinzip “View-Table mapped to
BaseTreefiltered byUID_OrgRoot='QER-V-…'” inkl. BeispielDepartment. Source: https://support.oneidentity.com/technical-documents/identity-manager/9.1.3/configuration-guide/one-identity-manager-schema-basics/table-definitions/table-types-in-one-identity-manager/database-views-of-the-view-type (Accessed: 2026-04-27) - IT Shop Admin Guide (9.1): *Assigning object-dependent references to a service category* — nennt explizit
AccProductGroupals table für Service Categories in diesem Kontext. Source: https://support.oneidentity.com/technical-documents/identity-manager/9.1/it-shop-administration-guide/setting-up-an-it-shop-solution/preparing-products-for-requesting/entering-service-categories/assigning-object-dependent-references-to-a-service-category (Accessed: 2026-04-27) - One Identity Manager 9.2.1 Konfigurationshandbuch (PDF, DE): UI-Objektdefinition
ESet_ITShop(Systemrollen für IT Shop) +ADSGroup.IsForITShopals preprocessor-relevante Spalte inkl.#If ITSHOP ThenBeispiel und “DB kompilieren” Hinweis. Source: https://support-public.cfm.quest.com/76368_OneIM_Configuration_de-de.pdf (Accessed: 2026-04-27) - One Identity community thread (troubleshooting context): “Account product not showing up in IT shop structure”. Source: https://www.oneidentity.com/community/identity-manager/f/forum/31777/account-product-not-showing-up-in-it-shop-structure (Accessed: 2026-04-27)