Source: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-oim-db-trigger-method-event-relations.md
> Source: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-oim-db-trigger-method-event-relations.md
Goal
Join the local decompiled method/event index to live sandbox database metadata so the relation from object-layer names to database tables, triggers, DBQueue tasks, and process-generation metadata is visible in one place.
Method
Read-only SQL was executed through F:/Claude/scripts/sandbox/Invoke-SandboxSql.ps1.
Repeatable exporter:
F:/Claude/scripts/research/export-oim-db-relations.ps1
Intermediate DB export:
F:/Claude/.tmp/oim-db-relations.json
Durable joined output:
- HTML:
F:/Claude/projects/identity-management/oim-kb-update/local-app/oim-decompile-index.html - JSON:
F:/Claude/projects/identity-management/oim-kb-update/local-app/oim-decompile-index-data.json
The joined output adds a Database Relations section to the decompile index.
Database Relation Coverage
| Relation type | Count | Meaning |
|---|---|---|
DialogMethod table/object relations | 71 | UI-visible method assignments through DialogMethod -> DialogObjectHasMethod -> DialogObject -> DialogTable. |
QBMEvent rows | 353 | Table/event catalog rows. |
JobEventGen rows | 400 | Event-to-process generation mappings. |
QBMDBQueueTask rows | 337 | DBQueue task definitions and processing procedures. |
| SQL modules with JobCreate/DBQueue references | 1,134 | Stored procedures, triggers, and generator/helper functions containing QBM_PJobCreate* or QBM_PDBQueueInsert*. |
| Triggers with JobCreate/DBQueue references | 918 | Table triggers whose definitions reference JobCreate or DBQueue insert procedures. |
| Parent tables with those triggers | 268 | Distinct tables with at least one relevant trigger. |
Extracted concrete HOCallMethod calls | 120 | Calls from stored procedures/triggers after excluding generic wrapper procedures. |
Extracted concrete HOFireEvent calls | 72 | Calls from stored procedures/triggers after excluding generic wrapper procedures. |
| Extracted concrete DBQueue insert call sites | 6,004 | QBM_PDBQueueInsert_Single / _Bulk call sites found in stored procedures/triggers. |
What the Join Adds
The database join makes three different relation layers visible:
1. UI/action catalog:
DialogMethod.MethodName- assigned
DialogObject.ObjectName - assigned
DialogTable.TableName
2. Event/process catalog:
QBMEvent.EventName- owning
DialogTable.TableName JobEventGenrows- active/deactivated
JobChainstate
3. SQL processing paths:
- triggers and procedures that call
QBM_PJobCreate_HOCallMethod* - triggers and procedures that call
QBM_PJobCreate_HOFireEvent* - triggers and procedures that call
QBM_PDBQueueInsert_Singleor_Bulk - DBQueue task IDs linked to
QBMDBQueueTask.ProcedureNamewhere the task ID is literal
High-Signal Observations
HOCallMethod is concentrated around approval and attestation processing:
PersonWantsOrg/personwantsorgAttestationCaseAttestationPolicy
Common extracted method names include:
AbortESCALATEMakeDecisionAssignMakeDecisionOnInsertAsyncReplaceUnsubscribeWaitingCompleteCasesUnderConstructionPrepareAttestations
HOFireEvent is used for event/process generation across helper and assignment tables. Common event names include:
RemoveAssignUpdateSystemSyncsInsertDecisionRequiredDeployTargetChangedOVERLIMITWARNINGRebuildWhereClauseRemindDeletePRNode
Trigger-heavy parent tables include:
DialogConfigParmDialogColumnDialogTablePersonBaseTreeQBMRelationQBMTreeTSBSpecificGroupBehaviorDialogObjectQBMTreeResult
Common DBQueue task IDs in extracted insert calls include:
QBM-K-CommonIncSemaphorQBM-K-CommonIncSemaphorPostQBM-K-CommonReCalculateQER-K-ITSHOPOrder-ABORTTSB-K-PersonHasObjectQBM-K-ScriptAssemblyResetQER-K-OrgAutoChildQBM-K-CommonMakeWatchtrigger
Interpretation Rules
DialogMethodis not the full callable surface. It only covers UI-visible method assignments. The decompile index remains necessary for customizer-only methods.QBMEventis a table/event catalog. A row is useful discovery metadata, but process execution still depends onJobEventGen, activeJobChain, and generated runtime event code.JobEventGen/JobChainis the DB-side process-generation mapping. CheckNoGenerateandIsDeactivatedByPreProcessorbefore assuming a fire event produces work.- Triggers connect the processing to concrete tables. The relation index now shows the trigger's parent table and whether the trigger references JobCreate,
HOCallMethod,HOFireEvent, or DBQueue insert procedures. - DBQueue insert extraction is intentionally broad. OneIM generated triggers and helper procedures can repeat shared patterns many times, so counts are useful for coverage and search, not for estimating unique business scenarios.
Caveats
- The SQL call extractor is literal-pattern based. It records variable method/event names as variables such as
@AbortMethodor@EventNamewhen the literal value is decided earlier in the procedure. - Dynamic SQL builders can still produce partially dynamic object/event strings. These rows are kept in the index but need manual follow-up before use.
- Generated helper functions and trigger templates are included in module inventory but excluded from the "concrete extracted HOCall/HOFire" call counts where possible.
- No sandbox DML was performed.
Next Experiments
- Add a focused IT Shop filtered view for
PersonWantsOrg,ITShopOrg,BaseTree,AccProduct,ADSGroup,BaseTreeHasADSGroup,BaseTreeHasObject, andAccProductInBaseTree. - Resolve variable method/event names such as
@AbortMethodand@EventNameby parsing local variable assignments in the same procedure. - Add a DBQueue task-centered view that groups triggers/procedures by
UID_Taskand links each task toQBMDBQueueTask.ProcedureName.