Source: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-pjobcreate-method-event-evidence.md
> Source: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-pjobcreate-method-event-evidence.md
Sandbox DB Evidence - QBM_PJobCreate Methods and Events
Scope: SELECT-only metadata inspection in live sandbox OneIM DB on im.sandbox.local.
Procedure Interfaces
QBM_PJobCreate_HOCallMethod, _B, and _L accept:
- target object selection:
@objecttypeplus@whereclauseor@XObjectKeys - method:
@MethodName - save behavior:
@save - correlation:
@GenProcID, affected object-key list, basis object key - payload:
@param1...@param10
QBM_PJobCreate_HOFireEvent, _B, and _L accept:
- target object selection:
@objecttypeplus@whereclauseor@XObjectKeys - event:
@EventName - correlation:
@GenProcID, affected object-key list, basis object key - payload:
@p2/@v2...@p31/@v31
Parameter-count summary:
| Procedure family | Parameter count | Explicit payload slots |
|---|---|---|
QBM_PJobCreate_HOCallMethod* | 29 | 10 method params |
QBM_PJobCreate_HOFireEvent* | 78 | 30 event parameter pairs (2..31) |
Metadata Tables
Catalog counts in this sandbox:
| Catalog | Count |
|---|---|
DialogMethod | 45 |
DialogObjectHasMethod | 71 |
QBMEvent | 353 |
JobEventGen | 400 |
Relevant table roles:
DialogMethod: UI/dialog-method definitions (MethodName,MethodScript,Caption,MethodEnabledFor,IsDeactivated,MethodBehavior).DialogObjectHasMethod: assignment of a dialog method to a dialog object.DialogObject: object definitions withObjectName,UID_DialogTable, and optionalWhereClause.QBMEvent: event definitions perDialogTable(EventName,UID_DialogTable).JobEventGen: mapsQBMEventrows to process generation entries.JobChain: process metadata, including preprocessor/deactivation state.
Dialog Methods Assigned to Objects
Examples from DialogMethod joined to DialogObjectHasMethod / DialogObject / DialogTable:
| Method | Table/object examples |
|---|---|
ITShop_Cancel_OpenOrder | PersonWantsOrg_Open_NotMy, PersonWantsOrg_PendingOrder |
ITShop_ChangeBoard | ITShopOrg_PR_NoDefault |
ITShop_ChangeBoardMultiple | ITShopOrg_Regal |
ITShop_ChangeShop | ITShopOrg_BO_NoDefault |
ITShop_ChangeShoppingCenter | ITShopOrg_SH_NoDefault |
ITShop_ExpiredProduct | AccProduct |
RemoveFromITShopBoards | ADSGroup, ESet, LDAPGroup, QERAssign, QERResource, QERReuse, UNSGroupB*, ... |
ADS_Deprovision / ADS_UndoDeprovision | ADSAccount, ADSGroup |
RevokeAccountDef | ADSAccount, ADSContact, LDAPAccount, UNSAccountB |
DialogSchedule_StartNow | DialogSchedule |
QERPolicy.CreateAttestations | QERPolicy |
Important observation: the object-layer methods used by shipped SQL are not limited to DialogMethod. A direct query for Abort, MakeDecision, PrepareAttestations, and related shipped SQL method names returned no DialogMethod rows. Those are object-layer/customizer methods invoked by job creation.
Literal Method Names Used by Shipped SQL
Extracted from SQL modules containing QBM_PJobCreate_HOCallMethod*:
| Method | Observed call-site pattern |
|---|---|
Abort | Attestation and IT Shop cleanup/validation (ATT_ZAttestationAbort, QER_ZITShopCheckValid, helper-head triggers, GDPR person delete). |
Assign | IT Shop validation/waiting procedures. |
CompleteCasesUnderConstruction | ATT_PAttestationCaseCreate_i. |
ESCALATE | Attestation / IT Shop decision escalation. |
MakeDecision | Automatic approval decisions in IT Shop and attestation. |
MakeDecisionOnInsertAsync | PersonWantsOrg insert/update triggers. |
PrepareAttestations | Schedule-driven attestation preparation. |
Replace, Unsubscribe, Waiting | IT Shop request-state transitions. |
Events Available Through QBMEvent
Events are table-scoped: use (DialogTable.TableName, QBMEvent.EventName), not just the event string.
Examples from QBMEvent / JobEventGen:
| Table | Event examples |
|---|---|
ADSAccount | INSERT, UPDATE, DELETE, DEACTIVATE, DEPROVISION, UNDO DEPROVISION, HANDLEOUTSTANDING, Read, home/profile events. |
ADSGroup | INSERT, UPDATE, DELETE, DEPROVISION, UNDO DEPROVISION, HANDLEOUTSTANDING, OVERLIMIT, Read. |
ADSDomain | POSTSYNC, Read, UPDATE. |
ITShopOrg | INSERT, UPDATE, DELETEBOARD, DeletePRNode, PROCESS_MAILAPPROVALS, RECALC_DECISIONMAKER. |
PersonWantsOrg | approval/request events such as GRANTED, DENY, DISMISSED, ESCALATE, ORDERGRANTED, ORDERREFUSED, QUERYTOPERSON, REMEMBER_VALIDUNTIL, PRODUCTEXPIRESSOON, UNSUBSCRIBEGRANTED. |
PWOHelperPWO / AttestationHelper | DECISIONCOLLECTION, DECISIONREQUIRED, REMIND. |
QBMServer | CHECKVERSION, DEPLOYTARGETCHANGED, GETCONFIG, GETDEPLOYTARGETS, SETCONFIG, SetPort, NotifyRequestStall. |
| assignment tables | Assign / Remove or uppercase ASSIGN / REMOVE, depending on table/module. |
Literal Event Names Used by Shipped SQL
Extracted from SQL modules containing QBM_PJobCreate_HOFireEvent*:
| Event | Observed call-site pattern |
|---|---|
Assign / Remove | Generated assignment triggers for XOrigin/XIsInEffect transitions. |
Insert | Generated/manual insert-related event firing, including helper objects. |
DecisionRequired / Remind | IT Shop / attestation helper mail and decision workflows. |
DeletePRNode | IT Shop product-node cleanup. |
DeployTargetChanged | QBMServer deployment target trigger handling. |
EXECUTE | Deferred operation execution. |
FROZENDETECT, OVERLIMITDETECT, OVERLIMITWARNING | Job queue monitoring events. |
Checkversion, GetDeployTargets | Job server / QBMServer operational events. |
GenerateMail, SendMail, SendRichMail | Report/mail generation paths. |
UpdateSystemSyncs | Dialog table/system-sync maintenance. |
Practical Lookup Queries
Find UI/dialog methods for a table:
SELECT dm.MethodName, dm.Caption, dt.TableName, dob.ObjectName, dm.MethodBehavior, dm.MethodEnabledFor
FROM DialogMethod dm
JOIN DialogObjectHasMethod dohm ON dohm.UID_DialogMethod = dm.UID_DialogMethod
JOIN DialogObject dob ON dob.UID_DialogObject = dohm.UID_DialogObject
JOIN DialogTable dt ON dt.UID_DialogTable = dob.UID_DialogTable
WHERE dt.TableName = N'ITShopOrg'
ORDER BY dm.MethodName, dob.ObjectName;
Find events and generated processes for a table:
SELECT qe.EventName, dt.TableName, jc.Name AS ProcessName, jeg.OrderNr,
jc.NoGenerate, jc.IsDeactivatedByPreProcessor
FROM QBMEvent qe
JOIN DialogTable dt ON dt.UID_DialogTable = qe.UID_DialogTable
LEFT JOIN JobEventGen jeg ON jeg.UID_QBMEvent = qe.UID_QBMEvent
LEFT JOIN JobChain jc ON jc.UID_JobChain = jeg.UID_JobChain
WHERE dt.TableName = N'PersonWantsOrg'
ORDER BY qe.EventName, jeg.OrderNr;
Find shipped SQL that calls methods/events:
SELECT OBJECT_NAME(m.object_id) AS ObjectName, o.type_desc
FROM sys.sql_modules m
JOIN sys.objects o ON o.object_id = m.object_id
WHERE m.definition LIKE '%QBM_PJobCreate_HOCallMethod%'
OR m.definition LIKE '%QBM_PJobCreate_HOFireEvent%'
ORDER BY o.type_desc, ObjectName;
Interpretation
- For
HOCallMethod, there are two lookup classes: - UI/dialog methods: query
DialogMethodassignments. - Object-layer/customizer methods: infer from shipped SQL, MDK/source documentation, or object-layer code; they may not appear in
DialogMethod. - For
HOFireEvent, useQBMEventas the event catalog andJobEventGen/JobChainas the process-generation map. - A method/event being technically fireable does not mean it is safe. The selection clause/object list,
GenProcID,BasisObjectKey, freeze-on-error behavior, and duplicate-check behavior matter.