Source: projects/identity-management/ad-shop-seeding/PROPOSAL.md

> Source: projects/identity-management/ad-shop-seeding/PROPOSAL.md

OIM IT Shop Entitlement AD Group Catalog Proposal

Status: ready for Viktor review

Target: sandbox.local on im.sandbox.local

Catalog source: data/ad-shop-catalog.json

Catalog version: 1.1.0

Implementation update 2026-04-27: the catalog has been seeded in AD under

OU=OIM-Managed,DC=sandbox,DC=local using

scripts/sandbox/seed/Invoke-AdShopSeed.ps1.

Created/verified objects: 22 OUs and 97 empty Global Security groups.

Purpose

Seed the OIM sandbox Active Directory with fictional but realistic AD

entitlement groups that can later be synchronized into One Identity Manager as

ADSGroup objects and published into the IT Shop.

This phase creates empty AD OUs and groups only. It does not create users,

memberships, OIM service items, OIM system roles, approval workflows, owners,

locations, birthright groups, or risk policy data.

Live OneIM Findings

Queried live against OneIM on 2026-04-26:

AreaFinding
IT Shop structureITShopOrg has 22 rows. Root shelf is Identity & Access Lifecycle.
Existing AD shop nodesExisting nodes include Identity & Access Lifecycle\Active Directory Groups and Group Lifecycle.
Existing role request nodesExisting products include Role membership, Role entitlement assignment, and System role entitlement assignment.
Service items/productsAccProduct has 20 rows, including predefined AD group and system-role request products.
AD groupsADSGroup has 287 rows. All are currently IsForITShop = 0 and IsITShopOnly = 0.
System rolesESet has 0 rows and ESetHasEntitlement has 0 rows. The schema exists but is unused.
System role typesESetType contains Common and RessourceSet.

Design implication: seed AD groups now; use Phase 2 to sync them into

ADSGroup, publish orderable groups through AccProduct/ITShopOrg, and

optionally create OIM ESet system roles that bundle selected ADSGroup

entitlements through ESetHasEntitlement.

Proposed Scope

Object typeCountNotes
Fictional applications15Business-realistic invented applications
Entitlement tiers per app5Reader, User, Editor, Admin, Approver
Application entitlement groups75APP_<CODE>_<TIER>
Business role groups9BR_*
System-role-related groups10SR_* bundle markers for later OIM ESet modeling
Distribution-list-shaped groups3DL_*, not mail-enabled in v1
Total AD groups97All Global Security groups
OUsAbout 21Root, buckets, and one OU per application

Explicitly excluded from this proposal:

OU Layout

DC=sandbox,DC=local
└── OU=OIM-Managed
    ├── OU=Resources
    │   ├── OU=Applications
    │   │   ├── OU=APP-ATLAS
    │   │   ├── OU=APP-HELIOS
    │   │   └── ... one OU per app
    │   └── OU=DistributionLists
    └── OU=Roles
        ├── OU=BusinessRoles
        └── OU=SystemRoles

Resources holds direct requestable/grantable entitlements. Roles holds

business-role and system-role bundle markers. System-role-related groups live

under Roles\SystemRoles because they model future role bundles rather than

standalone application permissions.

Naming Rules

All groups are Global Security groups with uppercase sAMAccountName values

and underscores.

BucketPatternExample
Application entitlementAPP_<CODE>_<TIER>APP_ATLAS_ADMIN
Business roleBR_<DEPT>BR_FINANCE
System-role-relatedSR_<CODE>SR_ENG_CORE
Distribution-list-shapedDL_<NAME>DL_ALLSTAFF

The catalog validates against AD's 20-character legacy sAMAccountName limit:

97 generated names, no duplicates, maximum length 20.

Application Catalog

CodeApplicationDomain
ATLASAtlas OfficeProductivity
HELIOSHelios MailProductivity
PULSEPulse ChatCollaboration
FORGEForge IDEEngineering
PIPEPipeline CIEngineering
VAULTVault SecretsEngineering
INSIGHTInsight BIData & Analytics
LUMENLumen Data LakeData & Analytics
TEMPOTempo HRHR
LEDGERLedger FinanceFinance
BEACONBeacon CRMSales
CITADELCitadel VPNInfrastructure
SENTSentinel SIEMSecurity
SPECSpectrum DAMMarketing
VOYAGERVoyager CMSMarketing

Shortened codes PIPE, SENT, and SPEC are intentional so

APP_<CODE>_APPROVER remains within 20 characters.

Per-App Entitlement Tiers

Every application gets the same five tiers for v1:

TierGroup suffixExample
ReaderREADERAPP_ATLAS_READER
UserUSERAPP_ATLAS_USER
EditorEDITORAPP_ATLAS_EDITOR
AdminADMINAPP_ATLAS_ADMIN
ApproverAPPROVERAPP_ATLAS_APPROVER

System-Role-Related Entitlements

The SR_* groups are AD-side bundle markers for later OIM system role (ESet)

modeling. They are not OIM system roles yet. Phase 2 can create matching

ESet rows and link included AD group entitlements through

ESetHasEntitlement.

GroupLabelIntended included entitlements
SR_WORKFORCE_BASEWorkforce Base AccessAPP_ATLAS_USER, APP_HELIOS_USER, APP_PULSE_USER
SR_ENG_COREEngineering CoreAPP_FORGE_USER, APP_PIPE_USER, APP_VAULT_READER
SR_ENG_ADMINEngineering AdminAPP_FORGE_ADMIN, APP_PIPE_ADMIN, APP_VAULT_ADMIN
SR_DATA_ANALYSTData AnalystAPP_INSIGHT_USER, APP_LUMEN_READER
SR_FIN_OPERATORFinance OperatorAPP_LEDGER_USER, APP_INSIGHT_READER
SR_HR_OPERATORHR OperatorAPP_TEMPO_USER, APP_ATLAS_USER
SR_SALES_OPERATORSales OperatorAPP_BEACON_USER, APP_PULSE_USER
SR_MKTG_CREATORMarketing CreatorAPP_SPEC_EDITOR, APP_VOYAGER_EDITOR
SR_SEC_OPERATORSecurity OperatorAPP_SENT_USER, APP_CITADEL_USER, APP_VAULT_READER
SR_PRIV_ACCESSPrivileged AccessAPP_CITADEL_ADMIN, APP_VAULT_ADMIN, APP_SENT_ADMIN

Cross-Cutting Groups

Business role groups:

BR_HR
BR_FINANCE
BR_IT
BR_ENGINEERING
BR_SALES
BR_MARKETING
BR_OPERATIONS
BR_LEGAL
BR_CUSTOMERSUPPORT

Distribution-list-shaped groups:

DL_ALLSTAFF
DL_LEADERSHIP
DL_ENGINEERING

Group Metadata

Each created group should use:

or [TYPE:SYSTEMROLE].

includes where relevant.

Recommended marker:

[OIM-SANDBOX-SEED:ad-shop-seeding:v1]

Seeder Implementation Proposal

Implementation path:

scripts/sandbox/seed/Invoke-AdShopSeed.ps1

Catalog path:

projects/identity-management/ad-shop-seeding/data/ad-shop-catalog.json

Behavior:

drift from catalog values.

object-level results.

Preflight validations:

Execution channel:

1. Preferred: WinRM Invoke-Command to im.sandbox.local with AdAdmin.

2. Fallback: direct AD LDAPS with System.DirectoryServices.Protocols.

3. Manual fallback: Viktor runs the seeder on the host.

Current workstation state: TrustedHosts is fixed and Get-OimHealth can read

remote services from im.sandbox.local.

OIM Phase 2

After AD sync imports these groups into ADSGroup, a separate OIM-side plan

should cover:

1. Confirm ADS sync includes OU=OIM-Managed.

2. Publish application groups as service items through the supported ADSGroup

publication path (QER\ITShop\AutoPublish\ADSGroup in this sandbox,

including database compile if the preprocessor-relevant parameter changes)

and assign them to the existing shallow sandbox shelves.

3. Use the four coarse service categories already seeded for applications,

business-role markers, system-role bundles, and distribution-list-shaped

groups. Add per-app subcategories only after portal behavior is tested.

4. Create OIM ESet rows for the SR_* catalog entries.

5. Link each system role to its intended ADSGroup entitlements through

ESetHasEntitlement.

6. Use existing predefined products for Role entitlement assignment and

System role entitlement assignment request demos.

Review Decisions Requested

Please review and approve or adjust:

1. Excluding risk, location, and birthright groups from v1.

2. Keeping business role marker groups.

3. Adding 10 SR_* system-role-related AD groups.

4. Treating SR_* groups as AD-side bundle markers for future OIM ESet

objects, not as OIM system roles yet.

5. Keeping five application entitlement tiers for every app.

6. Using the existing IT Shop/role structures in Phase 2 rather than creating

new OneIM objects in this AD-seeding phase.

Recommendation

Approve this proposal for AD seeding v1. It gives the sandbox a clean AD group

catalog for application entitlements and future system-role demos, while

respecting the current OneIM database state: IT Shop structure exists, AD

groups are not yet shop-published, and system roles are currently empty.