Purpose
This view supports workforce capability management and planning by providing consistent, up-to-date insight into employee skills, certifications, and team structures. It enables HR, project managers, and business leaders to make better decisions about deployment, development, and compliance.
Use Case
- Owner: Simon Mathieson
- Typical Use Cases:
- Understand workforce capability – View skill coverage across teams, locations, and domains to identify strengths and development areas.
- Monitor compliance and certification validity – Track certification status and identify employees due for renewal or reassessment.
- Support resourcing and project planning – Match people to projects based on skill, role, or location for optimal team composition.
- Ensure data accuracy – Compare SkillsBase and IFS records to maintain a reliable and complete picture of workforce data.
- Style: Each row is an employee coded attribute (meta code) with supporting
VALUE_METADATAJSON. CDS object/meta_codes structure.
Suggested dashboard insights:
- Skills coverage and gaps by PRU, team, or location.
- Certification currency and upcoming expiries.
- Skills adoption and completeness by business unit.
- Workforce capability trend over time (self-assessment vs supervisor assessment).
Source
Primary Source(s):
skl.people- IFS identity & employee lookups:
ifs.QDIM_FND_USER_PROPERTY_OL(SMTP_MAIL_ADDRESS)ifs.QDIM_FND_USER_OL(user, active)ifs.QDIM_PERSON_INFO_OL(PERSON_ID ↔ USER_ID)ifs.DIM_EMPLOYEE_OL(COMPANY, CODE as EMP_NO)
- Reference tables:
skl.locations- skl.teams
Load Path
SkillsBase API (2FactAuth) → (ADF Pipeline) → Bronze (skl.*) → Silver (employee.meta_codes_skillsbase)
- Refresh cadence: Daily (TBC)
Integration with Dimension / Reference Tables
Joins used (per SQL):
ifs.QDIM_FND_USER_PROPERTY_OL+ifs.QDIM_FND_USER_OL— resolve email address → identity (onlySMTP_MAIL_ADDRESS, active users)ifs.QDIM_PERSON_INFO_OL— identity →PERSON_IDifs.DIM_EMPLOYEE_OL(aggregated byPERSON_ID) — deriveCOMPANY,EMP_NOskl.locations— enrichLOCATION_ID→location.nameskl.teams— enrichTEAM_ID→team.name
Common optional joins:
cdm.employee_core(object canonicalisation, employment status)ref.skills_taxonomy(friendly skill/cert labels) — TBC
Sample Exec
For sample data execution, use the code:
EXEC get.myView @dataMart = 'Person', @viewName = 'Meta_Codes_SkillsBase', @token = '<myToken>', @version = '<202404>'Response (Output Schema)
Columns emitted by final SELECT:
Identifiers
- OBJECT_SEQ:
json (varchar)— canonical employee key JSON:{ "COMPANY_ID": "<int>", "PERSON_ID": "<code>" }COMPANY_IDresolved fromifs.DIM_EMPLOYEE_OL.COMPANYwhen available; otherwise mapped from email domain using the following mapping in SQL:apac.bmt.org→ 4009;bmt.org→ 1062;bmtglobal.com→ 1062;ca.bmt.org→ 5013;uk.bmt.org→ 1072;us.bmt.org→ 5088;bmtfleet.onmicrosoft.com→ 1062;apac-sec.bmt.org→ 3037; else 9900.
EMP_NOfromifs.DIM_EMPLOYEE_OL.CODE; fallback9900000 + skl.people.id.
- META_TYPE:
varchar— constant'SKILLSBASE'.
Meta Codes (attributes)
- ATTRIBUTE:
varchar— one of:DOMAINEMAILIDlast_self_assessmentlast_supervisor_assessmentLOCATION_IDROLE_ID(array string stripped of brackets/whitespace; NULL when empty)TEAM_ID
- CODE_VALUE:
varchar— attribute value (normalised/cast as in SQL). - VALUE_METADATA:
json (varchar)— JSON-ish payload with keys typicallyCODEandDESC, e.g. forEMAIL:{ "CODE": "<PERSON_ID>", "DESC": "<email>" }. Single quotes from source content are replaced with^.
Audit & Status
- CREATE_DATE:
date—GETDATE()cast todateat load time. - EXPIRY_DATE:
date— constant'2099-12-31'. - SOURCE_SYSTEM:
varchar— constant{"Source":"skl.people"}. - ACTIVE_FLAG:
int— constant1(active). - CHECKSUM:
nvarchar(32)— MD5 of(OBJECT_SEQ, ATTRIBUTE, CODE_VALUE)(hex string).
Keys & Uniqueness
- Primary (logical) key:
OBJECT_SEQ, META_TYPE, ATTRIBUTE, CODE_VALUE(plusEXPIRY_DATEif required for bitemporal patterns) - Grain statement: One row per employee coded attribute (per
ATTRIBUTEvalue). - De‑duplication rule(s): Prefer highest
CREATE_DATE; checksum can be used to detect duplicates/incremental changes.
Data Quality & Rules
- Mandatory fields:
OBJECT_SEQ, META_TYPE, ATTRIBUTE, CODE_VALUE, VALUE_METADATA - Validations:
- Email domain → company mapping resolves to a known code or 9900 (Other)
ROLE_ID: treat[], empty, or whitespace as NULLlast_*_assessmentvalues cast toDATE(YYYY‑MM‑DD)LOCATION_ID/TEAM_IDnumeric cast succeeds
- Business rules applied:
- Normalise string content; replace
'with^insideVALUE_METADATA - Derive
EMP_NOfallback as9900000 + skl.people.id
- Normalise string content; replace
- Assumptions/limitations: No explicit
OBJECT_CLASS/OBJECT_CODEcolumns — carried insideOBJECT_SEQJSON for this view.
Security & Privacy
- PII/Commercial sensitivity: Contains emails and employee identifiers → Confidential.
- Access control: Restrict to authorised HR/reporting roles; consider row‑level filtering by derived
COMPANY_ID. - Retention: Align with HR data retention policy (TBC).
Dependencies
- Upstream:
skl.people,ifs.QDIM_FND_USER_PROPERTY_OL,ifs.QDIM_FND_USER_OL,ifs.QDIM_PERSON_INFO_OL,ifs.DIM_EMPLOYEE_OL,skl.locations,skl.teams
- Downstream: Capability dashboards, HR compliance, project resourcing, employee master views