PulseHR
Workforce analytics for Dayforce
Built on Microsoft Power BI with a native Dayforce data connector. Includes pre-built dashboard templates for HR, payroll, and operations teams. Supports multi-entity and multi-site org structures. Requires an active Dayforce license and Power BI Pro or Premium.
PulseHR — Solution Overview
PulseHR is a Power BI–native workforce analytics layer built on top of Ceridian Dayforce. It pulls HR, payroll, scheduling, and compliance data directly from Dayforce through a certified connector, structures it into a purpose-built semantic model, and surfaces it through pre-built dashboards that HR leaders, payroll managers, and operations teams can use without writing a single query.
No custom ETL. No data warehouse required. No third-party middleware.
The analytics layer is built entirely on Microsoft Power BI infrastructure: a semantic model defined in Power BI Desktop using the native Dayforce connector, published to Power BI Service, and distributed through role-based workspace access and row-level security (RLS) tied to org hierarchy. Pre-built report templates cover four functional areas — Headcount & Turnover, Payroll Variance, Labor Scheduling, and Compliance Tracking — with each template wired to a shared dataset so all dashboards stay in sync as data refreshes.
PulseHR supports multi-entity and multi-site org structures natively. All filtering, RLS enforcement, and entity segmentation is handled at the semantic model layer, meaning a single deployment serves every FOC, division, or cost center in the org without duplicating reports.
How It Works
When a user opens a PulseHR dashboard, Power BI Service loads the published semantic model, applies the user's RLS profile, and renders the report against live or scheduled-refresh Dayforce data. HR business partners see their assigned cost centers. Payroll managers see their entity's runs. Executives see the full consolidated view.
Data flows in one direction:
Dayforce → Power BI Connector → Semantic Model → Published Dataset → Report Templates → End User
All transformations happen inside Power Query and DAX — no staging tables, no SQL Server dependency for standard deployments. For orgs requiring historical trending beyond Dayforce's standard retention window, PulseHR includes an optional incremental refresh configuration that snapshots data into Power BI's built-in storage before it ages out of the source.
Integration Architecture
The end-to-end pipeline follows a single pattern:
Dayforce Connector → Power Query Transform → Semantic Model → Dataset Publish → RLS-Filtered Report
Four Dayforce data domains are loaded and modeled:
Domain | Dayforce API Area | Primary Tables |
|---|---|---|
Workforce | Employee Management | Employees, Positions, Departments, Locations |
Payroll | Payroll Processing | PayRuns, Earnings, Deductions, Taxes |
Scheduling | Workforce Management | Shifts, Timesheets, Absences, Overtime |
Compliance | HR Compliance | Certifications, Incidents, Policy Acknowledgments |
Authentication uses OAuth 2.0 against the Dayforce API. Credentials are stored in Power BI Service as a data source connection, scoped to a dedicated service account. Scheduled refresh runs on a configurable cadence — daily by default, hourly available on Premium capacity.
Row-level security is enforced via a [User_Entity_Map] table loaded from Dayforce org hierarchy at refresh time. RLS roles are defined in the semantic model and assigned in Power BI Service — no manual maintenance as org structure changes.
Semantic Model
One shared dataset powers all four dashboard templates. The model follows a star schema with a central Fact_Payroll and Fact_Workforce_Event table joined to shared dimension tables.
Fact_Workforce_Event — Core HR Activity Record
Every headcount movement, status change, and employment lifecycle event lands here.
Field | Type | Notes |
|---|---|---|
Employee_XRefCode | Text | Dayforce unique employee identifier |
Event_Type | Text | Hire, Termination, Transfer, Promotion, Leave |
Effective_Date | Date | Event effective date from Dayforce |
Position_XRefCode | Text | FK to Dim_Position |
Department_XRefCode | Text | FK to Dim_Department |
Location_XRefCode | Text | FK to Dim_Location |
Entity_XRefCode | Text | FK to Dim_Entity — used for multi-entity filtering |
Employment_Status | Text | Active, Inactive, Leave, Terminated |
FTE_Value | Decimal | Full-time equivalent at event time |
Tenure_Days | Integer | Calculated from Hire_Date at load time |
Fact_Payroll — Payroll Run Detail
Every processed pay run line, gross-to-net, by employee and pay period.
Field | Type | Notes |
|---|---|---|
PayRun_XRefCode | Text | Dayforce pay run identifier |
Employee_XRefCode | Text | FK to Dim_Employee |
Pay_Period_Start | Date | FK to Dim_Date |
Pay_Period_End | Date | |
Gross_Pay | Currency | Pre-deduction total |
Net_Pay | Currency | Post-deduction total |
Regular_Hours | Decimal | |
Overtime_Hours | Decimal | |
Earnings_Code | Text | Dayforce earnings code |
Entity_XRefCode | Text | FK to Dim_Entity |
Variance_Flag | Boolean | Set by Power Query when gross deviates >X% from prior period |
Dim_Employee — Employee Master
Enriched employee profile built from Dayforce HR data at refresh time.
Field | Type | Notes |
|---|---|---|
Employee_XRefCode | Text | Unique external ID |
Display_Name | Text | |
Text | ||
Hire_Date | Date | |
Termination_Date | Date | Null if active |
Manager_XRefCode | Text | FK to self — used for org hierarchy traversal |
Job_Title | Text | |
Employment_Type | Text | Full-Time, Part-Time, Contract, Seasonal |
Pay_Class | Text | Salaried, Hourly |
Cost_Center | Text | Dayforce cost center assignment |
Dim_Position / Dim_Department / Dim_Location / Dim_Entity
Standard conformed dimensions. Dim_Entity is the critical multi-tenancy axis — every fact table carries an Entity_XRefCode foreign key, and RLS rules filter at this dimension.
Dim_Date
Standard calendar table with fiscal period support. Fiscal year offset is configurable at model level to match the org's Dayforce fiscal calendar.
Object Relationships
Dashboard Templates
Four pre-built report templates, each published as a separate Power BI report against the shared semantic model.
Headcount & Turnover
Tracks active headcount, FTE, and workforce movement over time. Key visuals: rolling headcount trend by entity/department, new hire vs. termination waterfall by month, turnover rate by cost center, tenure distribution histogram, and open headcount gap analysis pulled from active requisitions. Designed for HR business partners and CHROs.
Payroll Variance
Surfaces pay run anomalies and period-over-period changes before and after payroll close. Key visuals: gross pay variance by pay group vs. prior period, overtime hours concentration map by location, earnings code breakdown by department, flagged variance drill-through to employee level, and YTD cost trend by entity. Designed for payroll managers and finance leaders.
Labor Scheduling
Analyzes scheduled vs. actual hours, absence patterns, and shift coverage gaps. Key visuals: scheduled vs. worked hours delta by site, absence rate by department and rolling 13-week trend, overtime concentration by employee, schedule adherence score by location, and projected labor cost vs. budget. Designed for operations managers and site leads.
Compliance Tracking
Monitors certification currency, policy acknowledgment rates, and incident log status. Key visuals: certification expiry timeline by role, policy acknowledgment completion rate by entity, open incident count by type and severity, compliance gap heat map by department, and regulatory deadline calendar overlay. Designed for HR compliance teams and legal.
Deployment Sequence
Three-phase deployment to stand up the full PulseHR stack.
Phase | Deliverable | Detail |
|---|---|---|
1 | Connector Setup | Dayforce API credentials configured in Power BI Desktop; OAuth flow validated; service account scoped in Dayforce |
2 | Semantic Model Publish | .pbix file with full semantic model published to Power BI Service workspace; scheduled refresh configured; RLS roles defined and assigned |
3 | Report Template Deploy | Four dashboard templates published against shared dataset; workspace access provisioned by role; row-level security validated per entity |
DAX Measures — Core KPIs
All four dashboards pull from a shared measures table. Key measures included in the base model:
Measure | Logic |
|---|---|
Active Headcount | COUNTROWS filtered to Employment_Status = "Active" as of selected date |
FTE Total | SUM(FTE_Value) on active workforce snapshot |
Turnover Rate (Rolling 12M) | Terminations LTM / Average Active Headcount LTM |
Payroll Variance % | (Current Period Gross - Prior Period Gross) / Prior Period Gross |
Overtime % of Total Hours | Overtime_Hours / (Regular_Hours + Overtime_Hours) |
Avg Tenure (Days) | AVERAGEX on active employees |
Compliance Gap Count | COUNTROWS of expired or missing certifications as of today |
Requirements
Requirement | Minimum |
|---|---|
Dayforce | Active license with API access enabled |
Power BI | Pro (per-user reports); Premium (large orgs, incremental refresh, paginated reports) |
Dayforce API Scopes | Employee, Payroll, Scheduling, HR Compliance read access |
Service Account | Dedicated Dayforce user with report-only permissions |
Power BI Connector | Ceridian Dayforce connector (certified, available in Power BI Desktop) |
Multi-Entity Support | Requires Dayforce org hierarchy export enabled at implementation |



