Source: projects/identity-management/oim-kb-update/local-app/2026-04-27-oim-decompiled-method-event-evidence.md

> Source: projects/identity-management/oim-kb-update/local-app/2026-04-27-oim-decompiled-method-event-evidence.md

Goal

Use the local copy of the One Identity Manager application files under F:/Claude/agent-tools/oim to verify what methods and events are reachable after SQL creates HandleObject jobs through QBM_PJobCreate_HOCallMethod* and QBM_PJobCreate_HOFireEvent*.

Local Source

This is local reverse-engineering evidence for the installed application files. It should be used as implementation evidence for this sandbox/V10 file set, alongside live DB metadata and vendor documentation.

Key Findings

HandleObject CallMethod

VI.DB.Implementation.HandleObjectKernel confirms that the HandleObject CallMethod operation:

The runtime can resolve a method by name plus parameter count, or by a typed method signature in MethodName when parentheses are supplied. This is important for overloaded methods.

HandleObject FireEvent

VI.DB.Implementation.HandleObjectKernel confirms that the HandleObject FireEvent operation:

VI.DB.JobGeneration.JobGeneratorImpl shows that event generation looks for a generated script method named Event_<EventName>. If the generated method or chain assembly is missing, no process chain is created and the runtime logs/raises a warning. This means QBMEvent and JobEventGen are discovery and mapping metadata, but process generation still depends on the generated runtime script/chain availability.

PersonWantsOrg Methods and Events

QER.Customizer.PersonWantsOrg registers approval/request methods including:

These methods are gated by the current PWO state machine (PwOFunction). A name existing in the customizer does not mean every PersonWantsOrg row can execute it. State, permission context, and method parameters still matter.

PersonWantsOrg registers the names from PwOEvents as custom-generated events. The enum includes core IT Shop approval events such as Granted, Dismissed, OrderGranted, OrderRefused, Aborted, Canceled, Escalate, Direct, Recall, AddAdditional, AddInsteadOf, Deny, RevokeDelegation, RecallQuery, and RevokeAdditional.

ITShopOrg and Product Methods

QER.Customizer.ITShopOrg registers hierarchy actions:

This reinforces the IT Shop structure finding: product nodes, shelves, shops, and customer nodes are different object states over the BaseTree/ITShopOrg shape, not interchangeable rows.

QER.Customizer.ITShopProductCustomizer registers RemoveFromITShop with SingleObject and ChangesExternalState behavior. The live DB also has DialogMethod assignments such as RemoveFromITShopBoards for entitlement tables. Treat these as object-layer operations that can change IT Shop assignment state.

Attestation Methods and Events

ATT.Customizer.AttestationCase registers custom-generated events:

It registers decision methods similar to IT Shop approval handling, including Reserve, ResetReservation, Abort, Escalate, CancelAttestation, MakeDecision, DirectDecision, RecallDecision, query/answer methods, delegation methods, and prolongation.

ATT.Customizer.AttestationPolicy and AttestationPolicyGroup register creation/preparation functions such as CreateAttestations, PrepareAttestations, and CompleteCasesUnderConstruction, with state guards and ChangesExternalState behavior. This matches shipped SQL calls that delegate attestation setup/completion from SQL into the object layer.

Conclusions

Follow-up Experiments