Source: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-dbqueue-pjobcreate-procedure-evidence.md

> Source: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-dbqueue-pjobcreate-procedure-evidence.md

Sandbox DB Evidence - DBQueue Insert and QBM_PJobCreate Procedures

Scope: SELECT-only metadata inspection in live sandbox OneIM DB on im.sandbox.local.

Procedure Surface

Query:

SELECT p.name AS ProcedureName,
       STRING_AGG(CONCAT(par.name, ' ', TYPE_NAME(par.user_type_id)), '; ')
         WITHIN GROUP (ORDER BY par.parameter_id) AS Parameters
FROM sys.procedures p
LEFT JOIN sys.parameters par ON par.object_id = p.object_id
WHERE p.name LIKE 'QBM[_]PDBQueueInsert[_]%'
   OR p.name LIKE 'QBM[_]PJobCreate%'
GROUP BY p.name
ORDER BY p.name;

Findings:

Important live signatures:

ProcedureParameters
QBM_PDBQueueInsert_Single@UID_Task, @object, @SubObject, @GenProcID, @Dummy_no_Check_For_Existing, @Dummy_Sort_Order
QBM_PDBQueueInsert_Bulk@UID_Task, @DBQueueElements (QBM_YDBQueueRaw), @Dummy_Sort_Order, @Dummy_no_Check_For_Existing
QBM_PJobCreate@ComponentClass, @TaskName, @Parameters, @GenProcID, @ObjectKeysAffected, @isToFreezeOnError, @Retries, @priority, @Jobchainname, @StartAt, @BasisObjectKey, @XUser, @QueueName, @checkForExisting

Usage Footprint

Query:

WITH Hits AS (
  SELECT OBJECT_NAME(m.object_id) AS ObjectName, o.type_desc,
    CAST(CASE WHEN m.definition LIKE '%QBM_PDBQueueInsert_Single%' THEN 1 ELSE 0 END AS int) AS HasSingle,
    CAST(CASE WHEN m.definition LIKE '%QBM_PDBQueueInsert_Bulk%' THEN 1 ELSE 0 END AS int) AS HasBulk,
    CAST(CASE WHEN m.definition LIKE '%QBM_PJobCreate%' THEN 1 ELSE 0 END AS int) AS HasJobCreate
  FROM sys.sql_modules m
  JOIN sys.objects o ON o.object_id = m.object_id
  WHERE m.definition LIKE '%QBM_PDBQueueInsert_Single%'
     OR m.definition LIKE '%QBM_PDBQueueInsert_Bulk%'
     OR m.definition LIKE '%QBM_PJobCreate%'
)
SELECT type_desc,
       COUNT(*) AS ObjectsWithAnyHit,
       SUM(HasSingle) AS ObjectsWithSingle,
       SUM(HasBulk) AS ObjectsWithBulk,
       SUM(HasJobCreate) AS ObjectsWithJobCreate
FROM Hits
GROUP BY type_desc
ORDER BY type_desc;

Result:

Object typeAny hitSingleBulkJobCreate
SQL_SCALAR_FUNCTION7134
SQL_STORED_PROCEDURE209559783
SQL_TRIGGER91837552480

Interpretation: DBQueue and object-layer job creation procedures are heavily used by generated/shipped DB code, especially triggers.

DBQueue Configuration Snapshot

Query:

SELECT FullPath, Value, Enabled, IsEnabledResulting
FROM DialogConfigParm
WHERE FullPath LIKE 'QBM\DBQueue%'
ORDER BY FullPath;

Result:

FullPathValueEnabledEffective
QBM\DBQueue1truetrue
QBM\DBQueue\BufferTimeout120truetrue
QBM\DBQueue\ChangeLimitDefault3000truetrue
QBM\DBQueue\CountSlotsMax5truetrue
QBM\DBQueue\DefaultRuntime90truetrue
QBM\DBQueue\GenProcIDReplaceLimit2000falsefalse
QBM\DBQueue\KeepAlive20truetrue
QBM\DBQueue\MaxBulkFactor15000truetrue
QBM\DBQueue\OverloadLimit200000truetrue

Note: vendor 9.3+/V10 docs mention QBM | DBQueue | MaxSlotsPerTask, but this snapshot did not return an enabled/config row for that path. Track as an open delta.

QBMDBQueueTask Shape

Live columns observed:

This matches the 9.3+/V10 model where task metadata, dependencies (QBMDBQueueTaskDepend), and CustomWeight matter for scheduling.

Follow-up Targets