Source: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-basetreehasadsgroup-pr-links-and-basetreehasobject-evidence.md

> Source: projects/identity-management/oim-kb-update/sandbox-db/2026-04-27-basetreehasadsgroup-pr-links-and-basetreehasobject-evidence.md

BaseTreeHasADSGroup PR links + BaseTreeHasObject (ADSGroup) — Live sandbox evidence

Environment:

1) BaseTreeHasObject schema (key columns)

BaseTreeHasObject is the “generic” link table between an org node (UID_Org) and an ObjectKey (XML-ish key string).

Live schema (sys.columns) for dbo.BaseTreeHasObject:

Notes:

2) ITShopOrgHasADSGroup view includes all node types in the IT Shop subtree

Live view definition:

create view dbo.ITShopOrgHasADSGroup as
select ...
from BaseTreeHasADSGroup
where exists (
  select top 1 1
  from BaseTree y
  where y.UID_Org = BaseTreeHasADSGroup.UID_Org
    and y.UID_OrgRoot = 'QER-V-ITShopOrg'
)

Important consequence:

3) Concrete example: APP_ATLAS_ADMIN

3.1 PR node + BaseTreeHasObject link

Joined evidence:

Key IDs (live):

3.2 BaseTreeHasADSGroup has both BO and PR links

For the same group, BaseTreeHasADSGroup contains two rows in the IT Shop subtree:

4) Seeded catalog completeness (97/97)

For all ADSGroup rows with marker [OIM-SANDBOX-SEED:ad-shop-seeding:v1] (97 rows):

5) Shipped trigger/procedure behavior (live DB definitions)

5.1 ADS_TIBaseTreeHasADSGroup (insert trigger)

Relevant behavior (excerpt):

5.2 ADS_TUBaseTreeHasADSGroup (update trigger)

On XOrigin / XIsInEffect changes it enqueues ADS-K-BaseTreeHasObject (bulk) for affected org nodes.

5.3 ADS_ZBaseTreeHasObject (DBQueue task procedure)

Live procedure logic shows how BaseTreeHasObject rows for ADSGroup are derived from BaseTreeHasADSGroup: