Skip to main content

Overview

Shane Longman is a fictional lobbying firm, with sample users generated from the character names of the cast of the British TV series Capital City (ITV/Euston Films).

Shane Longman is organised into specialised practice areas, strategic support teams, and operational departments.

The core lobbying and practice group is Federal Affairs. The support teams are Public Affairs and Strategic Communications, Intelligence and Analytics, Operations and Compliance which includes the Business Development and Client Management teams.

Org Chart

Geographic attributes​

Every user includes l (locality / city) and st (state / province) attributes. At this point these geographic attributes are for reporting and filtering only — they do not gate access to records.

Roles​

Each user is assigned a Keycloak realm role, roles are coarse-grained and reflect the user's seniority and position. Not what they can do to a specific entity (that is governed by the manager-as-sub hierarchy, ownedBy/assignedTo, and team groups).

The tiers are:

TierKeycloak role nameCommon titles (the role covers all of these)Who this is in the sample
Entry-level practitioneranalystAnalyst, Associate AnalystGraduate assistants and junior staff who handle data collection, market research, financial modeling, slide deck preparation, and primary task execution.
Mid-level professionalconsultantConsultant, Senior ConsultantExperienced professionals responsible for managing specific workstreams, conducting client interviews, designing solutions, and drafting deliverables.
Day-to-day project leadermanagerManager, Engagement Manager, Project LeaderExperienced leaders who oversee day-to-day project operations, manage delivery timelines, lead consultant teams, and maintain primary client relationships.
Senior practice leadersenior-managerSenior Manager, Director, Associate PartnerSenior leaders tasked with driving multi-project delivery, leading sector or functional practice areas, and actively generating new business.
Co-owner / senior executivepartnerPartner, Principal, Managing DirectorCo-owners or senior executives of the firm focused on revenue generation, strategic client account management, firm governance, and practice development.

What this is not: these are not sales roles (salesperson, sales-manager, etc.). The Shane Longman sample is a separate organisation with its own role model. The two role models coexist in the same Keycloak realm — individual users are assigned to one or the other depending on which organisation they belong to — but the roles are not interchangeable between organisations. (A salesperson in the Sales org is not the same role tier as a consultant in Shane Longman, even if both are "mid-level practitioners" in their respective firms.)

The sample users​

The sample users live in backend/services/openldap/ldif/shane-longman.ldif. Their attributes in the LDIF use the inetOrgPerson attribute names directly: title, departmentNumber (the inetOrgPerson department attribute — mapped to Keycloak's department custom attribute at federation time), mail, manager (the manager's LDAP DN), l, st, and description (which, in the sample, carries the user's pre-computed Keycloak sub — see the user provisioning doc's import-time resolution section). The table below shows the users, their titles and departments as they appear in the LDIF's title/departmentNumber attributes, their manager's LDAP DN, the pre-computed KC sub that the resolution uses, and their geographic attributes.

All 13 users are based in Canberra (l: Canberra, st: ACT) and use the single shane-longman.org email domain.

uidCharacterTitle (LDIF title)Department (LDIF departmentNumber)Manager (LDAP DN)Pre-computed KC sub (in description)CityStateKeycloak role (assigned after import)
systemSystem AccountSystem AccountSystem(none — top of hierarchy)(none)CanberraACTsystem-administrator
james.farrellJames FarrellChief Executive OfficerExecutive(none — top of hierarchy)(none)CanberraACTpartner
lee.wolfLee WolfDirector, Federal AffairsFederal Affairsuid=james.farrell,ou=people,dc=shane-longman,dc=org(own sub:) 22222222-2222-2222-2222-222222222222CanberraACTsenior-manager
leonard.ansenLeonard AnsenDirector, Strategic CommunicationsStrategic Communicationsuid=james.farrell,ou=people,dc=shane-longman,dc=org(own sub:) 33333333-3333-3333-3333-333333333333CanberraACTsenior-manager
max.lubinMax LubinHead of Business DevelopmentBusiness Developmentuid=leonard.ansen,ou=people,dc=shane-longman,dc=org(own sub:) 44444444-4444-4444-4444-444444444444CanberraACTmanager
wendy.foleyWendy FoleyHead of Client ManagementClient Managementuid=leonard.ansen,ou=people,dc=shane-longman,dc=org(own sub:) 55555555-5555-5555-5555-555555555555CanberraACTmanager
declan.mcconnachieDeclan McConnachieConsultant, Federal AffairsFederal Affairsuid=lee.wolf,ou=people,dc=shane-longman,dc=org(own sub:) 66666666-6666-6666-6666-666666666666CanberraACTconsultant
sirkka.nieminenSirkka NieminenConsultant, Federal AffairsFederal Affairsuid=lee.wolf,ou=people,dc=shane-longman,dc=org(own sub:) 77777777-7777-7777-7777-777777777777CanberraACTconsultant
michelle.hauptmannMichelle HauptmannConsultant, Strategic CommunicationsStrategic Communicationsuid=leonard.ansen,ou=people,dc=shane-longman,dc=org(own sub:) 88888888-8888-8888-8888-888888888888CanberraACTconsultant
chas.ewellChas EwellAssociate Analyst, Federal AffairsFederal Affairsuid=lee.wolf,ou=people,dc=shane-longman,dc=org(own sub:) bbbbbbbb-cccc-dddd-eeee-ffffffffffffCanberraACTanalyst
hudson.talbotHudson TalbotConsultant, Strategic CommunicationsStrategic Communicationsuid=leonard.ansen,ou=people,dc=shane-longman,dc=org(own sub:) 99999999-9999-9999-9999-999999999999CanberraACTconsultant
hannah.burgessHannah BurgessHead of ITITuid=leonard.ansen,ou=people,dc=shane-longman,dc=org(own sub:) aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeeeCanberraACTconsultant
hilary.rollingerHilary RollingerAssociate Analyst, Strategic CommunicationsStrategic Communicationsuid=leonard.ansen,ou=people,dc=shane-longman,dc=org(own sub:) cccccccc-dddd-eeee-ffff-000000000000CanberraACTanalyst

Mapping notes:

  • Lee Wolf and Leonard Ansen — each has their own pre-computed KC sub in their description attribute (22222222-... and 33333333-... respectively). Both report to James Farrell (whose description holds 11111111-...). Their Keycloak manager attribute (after import-time resolution) is James Farrell's sub (11111111-...).
  • Max Lubin and Wendy Foley — department heads under Leonard Ansen. Head of Business Development and Head of Client Management respectively. After import-time resolution their Keycloak manager attribute is Leonard Ansen's sub (33333333-...).
  • Declan McConnachie and Sirkka Nieminen — consultants on the Federal Affairs desk, under Lee Wolf. After import-time resolution their Keycloak manager attribute is Lee Wolf's sub (22222222-...).
  • Michelle Hauptmann and Hudson Talbot — consultants on the Strategic Communications desk, under Leonard Ansen. After import-time resolution their Keycloak manager attribute is Leonard Ansen's sub (33333333-...).
  • Hannah Burgess — Head of IT, under Leonard Ansen. After import-time resolution her Keycloak manager attribute is Leonard Ansen's sub (33333333-...).
  • Chas Ewell — associate analyst on the Federal Affairs desk, under Lee Wolf. After import-time resolution his Keycloak manager attribute is Lee Wolf's sub (22222222-...).
  • Hilary Rollinger — associate analyst on the Strategic Communications desk, under Leonard Ansen. After import-time resolution her Keycloak manager attribute is Leonard Ansen's sub (33333333-...).

A few things to notice in the sample​

  • Manager hierarchy depth — James Farrell (CEO, partner) → Lee Wolf / Leonard Ansen (senior-manager) → Max Lubin / Wendy Foley (manager, department heads) → the consultants and analysts. The manager attribute on each user holds their manager's Keycloak sub, so the manager hierarchy works the same way as any other organisation in the model: a user with a sub equal to the manager attribute of another user receives access to that user's records (subject to role and scope). The CEO has no manager — top of hierarchy.
  • Geographic spread — the entire sample organisation is based in Canberra. Every user has l: Canberra, st: ACT. These are reporting attributes only — they don't affect who can see whose records.
  • Character-to-role mapping — the sample maps the Capital City characters to the consulting-firm role tiers consistently with both the series' portrayal of each character and the access-control model: the CEO and the two Directors are the senior executives / practice leaders; the department heads are the day-to-day project leaders; the senior traders, capital markets originator, and IT head are the mid-level consultants; the junior trader and the graduate assistant are the entry-level analysts.
  • Customers — the sample's customers are the Australian political parties seeded in the Party Service (backend/modules/party-service/src/main/resources/sample-data/). This leverages the existing seed data rather than duplicating it.
  • Role model is distinct from the Sales org — the Shane Longman roles (analyst, consultant, manager, senior-manager, partner, system-administrator) are not the same as the Sales org roles (salesperson, sales-manager, etc.). The two models coexist in the same Keycloak realm; a user belongs to one organisation and is assigned the role appropriate to that organisation. This lets you see how two organisations with different role models can coexist in the same realm.
  • Organisational structure — Shane Longman is organised into specialised practice areas, strategic support teams, and operational departments. The core lobbying and practice group is Federal Affairs (led by Lee Wolf). The support teams are Strategic Communications (led by Leonard Ansen), Intelligence and Analytics, and Operations and Compliance which includes the Business Development (Max Lubin) and Client Management (Wendy Foley) teams. The IT team (Hannah Burgess) provides technical support.

Where the sample is defined​

The sample users (and their attributes, reporting line, and geographic attributes) are defined as an LDIF file:

  • backend/services/openldap/ldif/shane-longman.ldif

LDIF is the standard format for importing users into an LDAP directory server. In the development path, the LDIF is loaded into an OpenLDAP directory, and then Keycloak's LDAP User Federation imports (or on-demand syncs) the users from that directory into the Serendipity realm. This is the automated, file-driven alternative to creating users one-by-one in the Keycloak Admin Console.

For the full explanation of the approach, including the OpenLDAP setup, the Keycloak federation configuration, the attribute mappings, and the explanation of why the manager attribute in the LDIF holds the manager's LDAP DN (not the Keycloak sub) and how it gets resolved to the sub at import time, see:

The sample data itself (the accounts, contacts, products and other data you explore in the UI) lives in the application's sample-data bootstrap — the data you see when you sign in as one of the sample users. That bootstrap is separate from the LDIF; the LDIF defines the people (with their roles, groups, manager hierarchy and geographic attributes), and the application's sample bootstrap defines the business data (accounts, contacts, products) associated with those people.

References​