Table of Contents
- 1 The Business Situation
- 2 The Existing Process
- 2.1 Administrative Problems
- 2.2 Business Effects
- 3 What the New System Needed to Do
- 4 Implementation Approaches Considered
- 4.1 Improved Shared Checklist
- 4.2 Google Workspace
- 4.3 Microsoft 365
- 4.4 Airtable
- 4.5 Dedicated HR Software
- 5 The Selected Solution
- 6 System Architecture and Data Flow
- 7 Data Structure
- 7.1 Onboarding Requests Fields
- 7.2 Task, Template, Equipment, and Log Fields
- 8 Workflow Statuses and Ownership
- 9 Step-by-Step Implementation
- 9.1 Step 1: Prepare the Accounts and Permissions
- 9.2 Step 2: Build the Intake
- 9.3 Step 3: Create the System of Record
- 9.4 Step 4: Connect the Tools
- 9.5 Step 5: Build the Core Automation
- 9.6 Step 6: Add Approvals, Reminders, and Escalations
- 9.7 Step 7: Add Documents and File Management
- 9.8 Step 8: Add Reporting and Operational Views
- 9.9 Step 9: Add Security and Governance Controls
- 9.10 Step 10: Deploy and Test
- 10 Code and Configuration
- 10.1 Environment Configuration
- 10.2 Duplicate Key
- 10.3 Readable Request ID
- 10.4 Task-Template Applicability
- 10.5 Task Key and Due Date
- 10.6 Task-Generation Trigger Condition
- 10.7 Readiness Percentage
- 10.8 Teams Task Message
- 10.9 Scope and Retry Configuration
- 11 Failure Handling and Operational Reliability
- 12 A Complete Example
- 13 Implementation Cost
- 14 Estimated Time and Cost Savings
- 15 Adding AI to the Automation
- 15.1 The Recommended AI Enhancement
- 15.2 Benefits of the AI Enhancement
- 15.3 What Remains Rule-Based or Human-Controlled
- 15.4 Estimating the Additional Value of AI
- 16 Testing Checklist
- 17 Ongoing Maintenance
- 18 When to Move to Dedicated Software
- 19 Implementation Checklist
The Business Situation
The representative business in this case study is a fictional 90-person B2B software provider operating with a hybrid workforce. Employees work from a primary office, a smaller shared office, or approved remote locations.
Note: This case study is provided as a representative example of the types of AI integration and digital transformation solutions Intelligex designs and delivers. Actual engagements are tailored to each client’s goals, constraints, existing systems, timeline, and available resources, so the approach, tools, and outcomes may vary.
The People Operations team consists of a People Operations lead and one coordinator. Employee onboarding also involves an IT administrator, a payroll specialist, an office coordinator, and the applicable hiring manager. Department leaders occasionally approve privileged application access or nonstandard equipment.
The company processes an average of six onboarding requests each month, including permanent employees, fixed-term employees, and contractors. Each request creates approximately 12 to 18 tasks, producing roughly 90 onboarding tasks per month.
The company already uses Microsoft 365 for email, files, identity, meetings, and internal communication. Its existing onboarding process relies on email, a shared spreadsheet, Word checklists, calendar reminders, and manually created Teams messages. Payroll information is entered separately in the company’s existing payroll system.
People Operations starts the process after a hire has been approved. A coordinator emails IT, payroll, facilities, and the hiring manager with the employee’s name, role, start date, work arrangement, and expected equipment. Each department maintains its own notes and responds by email when work is complete.
This approach becomes unreliable when start dates change, managers overlook messages, or responsibilities differ by role and work location. People Operations spends time asking for status updates instead of resolving actual onboarding issues. Managers cannot easily see whether an employee is ready, while leadership has no consistent reporting on overdue tasks or onboarding capacity.
The company needs a controlled workflow that retains human approval while automating coordination, reminders, task creation, readiness reporting, and audit evidence.
The Existing Process
The original onboarding process follows this sequence:
- People Operations receives confirmation that a candidate has accepted an offer.
- The coordinator copies information from the approved hiring record into a shared spreadsheet.
- The coordinator selects an old Word checklist that appears similar to the new employee’s role.
- An email is sent to the manager, IT administrator, payroll specialist, and office coordinator.
- Each recipient creates personal reminders or adds notes to a separate departmental tracker.
- The manager replies with application and equipment requirements, sometimes across several email threads.
- IT creates accounts, prepares equipment, and emails People Operations when complete.
- Payroll enters the employee in the payroll platform and returns a reference number.
- Facilities prepares a badge or workspace when required.
- People Operations follows up with anyone who has not responded before the start date.
- The spreadsheet is manually updated to show whether the employee is ready.
- After the employee starts, the coordinator archives the checklist and email messages.
Administrative Problems
- Employee information is copied into several emails and trackers.
- Checklist selection depends on the coordinator’s memory.
- Due dates are manually calculated.
- Task completion is reported through free-form email.
- Supporting documents are stored in different folders.
- Equipment identifiers are not consistently linked to the employee request.
Business Effects
- Records can disagree about a start date or work location.
- Role-specific access tasks may be omitted.
- Managers receive reminders inconsistently.
- People Operations cannot distinguish delayed work from missing updates.
- Readiness reporting requires manual reconciliation.
- Process knowledge depends heavily on one coordinator.
Missing information creates additional delays. For example, a request marked as remote may not specify whether equipment must be shipped. A manager may request privileged access in an email after the original checklist has already been distributed. The change is then easy to miss.
The spreadsheet provides a limited audit history. It may show that an item is complete, but not who completed it, which evidence was reviewed, when approval occurred, or whether the task was completed after an escalation.
The practical effect is not limited to administrative inconvenience. Late account creation can reduce an employee’s productivity on the first day. Unclear equipment ownership can lead to duplicate purchases. Incomplete payroll setup can require urgent correction. Managers also lose confidence in readiness reports when the underlying information is assembled manually.
What the New System Needed to Do
The project team defined the requirements before choosing the implementation tools.
| Requirement | Required behavior | Control |
|---|---|---|
| Controlled intake | Collect one consistent set of onboarding information from authorized internal users. | Required fields, controlled choices, and flow validation |
| Duplicate prevention | Prevent a repeated submission or trigger from creating a second request. | Unique candidate reference and start-date key |
| Unique identification | Assign a readable request number to every onboarding event. | SharePoint item ID combined with year |
| Approval routing | Obtain manager confirmation and conditional IT approval. | Sequential Power Automate approvals |
| Template-driven tasks | Create tasks based on role family, work mode, employment type, and location. | Controlled task-template list |
| Ownership | Assign every task to an individual or defined operational role. | Configuration list and manager mapping |
| Documents | Track required evidence without placing sensitive payroll documents in a general list. | Restricted SharePoint libraries and evidence links |
| Equipment | Track the required bundle, asset identifier, readiness, delivery method, and handoff. | Related equipment list |
| Reminders | Notify owners about upcoming and overdue tasks. | Scheduled Power Automate flow |
| Escalations | Escalate unresolved tasks and approvals according to defined rules. | Department and backup-owner configuration |
| Readiness | Calculate whether approvals, blocking tasks, evidence, and equipment are complete. | Automated rollup every 15 minutes |
| Reporting | Show active requests, overdue work, exceptions, failures, and processing time. | Microsoft Lists views and Teams summaries |
| Audit evidence | Retain approval identifiers, responders, timestamps, completion details, and errors. | List version history and automation log |
| Manual override | Allow authorized staff to correct records or resolve exceptions without bypassing evidence requirements. | Restricted override fields and mandatory notes |
| Human control | Keep access approval, payroll entry, policy exceptions, and final closure under human control. | Named approvers and task owners |
The company also required the system to avoid storing bank information, tax identifiers, compensation details, medical information, or identity documents in the general onboarding lists. Those records remain in systems and libraries with more restrictive access.
Implementation Approaches Considered
| Approach | Connected tools | Effort | Customization | Main limitation |
|---|---|---|---|---|
| Improved shared checklist | Spreadsheet, email, shared folders | Low | Low | Remains dependent on manual updates and follow-up |
| Google Workspace workflow | Google Forms, Sheets, Drive, Apps Script | Moderate | High with scripting | Would add a second productivity environment |
| Microsoft 365 workflow | Forms, Lists, Power Automate, Teams, SharePoint | Moderate | High for this volume | Requires disciplined list and flow governance |
| Airtable workflow | Airtable forms, tables, automations, Microsoft 365 connectors | Moderate | High | Adds another data platform and permission model |
| Dedicated HR onboarding software | HR platform, payroll, identity, document systems | Higher | Depends on platform | Greater implementation and recurring commitment |
Improved Shared Checklist
A better spreadsheet could add standard tabs, owners, due dates, and conditional formatting. This would improve consistency but would not reliably route approvals, create role-specific tasks, send controlled reminders, or preserve a complete audit trail. It would also remain vulnerable to accidental edits and duplicated files.
Google Workspace
Google Forms, Sheets, Drive, and Apps Script could support this process. Apps Script would provide flexible task generation, reminders, and document handling. However, the company already manages identity, files, and communication in Microsoft 365. Introducing a second productivity environment would create additional access reviews, support requirements, and records-retention decisions.
Microsoft 365
Microsoft Forms could provide internal intake, Microsoft Lists could hold structured records, Power Automate could manage approvals and task creation, and Microsoft Teams could deliver operational notifications. SharePoint, which supports Microsoft Lists and Teams files, could store restricted evidence. This option retained the company’s existing identity and collaboration environment.
Airtable
Airtable would provide a flexible relational interface and useful views. It would be appropriate if the company wanted a separate operations database or required richer form and table experiences than its productivity suite provided. In this scenario, it would add another repository for employee-related data and require new integration, licensing, and governance decisions.
Dedicated HR Software
A dedicated human resources or onboarding platform would offer stronger employee-lifecycle functionality, vendor support, and potentially deeper payroll or identity integrations. It was not selected for this representative implementation because the immediate requirement was coordination rather than replacement of the existing hiring, payroll, or identity systems. The company would reconsider this option as volume and regulatory requirements increase.
The Selected Solution
The selected implementation uses Microsoft Forms, Microsoft Lists, Power Automate, Microsoft Teams, and restricted SharePoint document libraries. It connects the tools already used by the company and does not require a custom application or external database.
| Tool | Responsibility | Important boundary |
|---|---|---|
| Microsoft Forms | Internal onboarding-request intake | Does not collect bank, tax, identity, or medical information |
| Microsoft Lists | System of record for requests, tasks, equipment, templates, configuration, and errors | Access is limited to operational staff |
| Power Automate | Validation, approvals, task creation, reminders, readiness rollups, and notifications | Does not make final access or policy decisions |
| Microsoft Teams | Task notifications, approval reminders, escalations, and operational summaries | Messages contain limited employee information |
| SharePoint | Restricted onboarding evidence and IT handoff documents | Sensitive payroll documents stay in the payroll system |
| Existing payroll platform | Official payroll setup and payroll employee identifier | Entry remains a payroll-controlled human task |
| Microsoft Lists views | Operational reporting and exception queues | Broader analytics can be added later |
| Optional Copilot Studio agent | Grounded onboarding questions in Teams | Added only after the rule-based workflow is stable |
The existing payroll system was retained. The workflow creates and monitors a payroll task, but it does not automatically submit personal or financial information to payroll. The payroll specialist records the external employee identifier after completing the controlled payroll process.
Manual checklist creation, routine status emails, due-date calculation, and general reminders were removed. Manager approval, privileged-access approval, payroll entry, equipment assignment, evidence verification, exception resolution, and final request closure remained human-controlled.
System Architecture and Data Flow
The architecture uses Microsoft Lists as the operational database. Power Automate responds to Forms submissions and list changes, while scheduled flows calculate readiness and send reminders. Teams presents notifications but does not become the system of record.
- Request submission: A People Operations user submits Microsoft Forms. The form supplies employee, role, manager, start-date, location, equipment, and access information. The response ID is returned by Forms.
- Validation: Power Automate retrieves the response, normalizes the candidate reference and date, verifies required business rules, and builds a duplicate key.
- Duplicate check: The flow queries the Onboarding Requests list for the duplicate key. If it exists, the event is logged and no second request is created.
- Request creation: A new list item is created. The SharePoint item ID is returned and transformed into a readable request ID such as
ONB-2026-000184. - Document preparation: The flow creates restricted folders for permitted evidence and stores the folder links on the request. A folder-creation failure places the request in an exception state.
- Manager approval: A separate approval flow starts when the request status becomes Submitted. The manager can approve, request more information, or reject.
- Conditional IT approval: Privileged access or nonstandard equipment causes a second approval to be sent to the IT approver. Standard requests skip this step.
- Task generation: When approvals are complete, Power Automate reads active templates and selects those matching role family, work mode, employment type, and location.
- Task and equipment creation: The flow creates unique task records and any required equipment placeholders. Returned list IDs and task keys are stored for later reconciliation.
- Notifications: Teams messages tell task owners what they own, when it is due, and where the controlled record can be found.
- Readiness calculation: A scheduled flow reads open requests, related blocking tasks, evidence states, and equipment records. It updates completion counts, readiness percentage, and readiness status.
- Completion: When all readiness conditions are satisfied, Teams notifies People Operations and the manager. People Operations completes the final review and closes the request after the employee starts.
- Intake: Microsoft Forms used by authorized internal People Operations staff
- System of record: Microsoft Lists stored on a restricted SharePoint site
- Automation layer: Power Automate cloud flows
- Document storage: Restricted SharePoint document libraries
- Notifications: Microsoft Teams, with email used only as a fallback where necessary
- Reporting: Microsoft Lists views and scheduled Teams summaries
- AI layer: Optional Copilot Studio onboarding assistant grounded in approved SharePoint content
Data Structure
The design uses related lists rather than one wide spreadsheet. The request is the parent record. Tasks and equipment records reference the request by both a lookup field and a denormalized request ID. The text request ID simplifies filtering, notifications, exports, and recovery.
| List | Purpose | Relationship |
|---|---|---|
| Onboarding Requests | One parent record for each new-hire onboarding event | Parent of tasks and equipment |
| Onboarding Tasks | Department tasks, document requirements, due dates, ownership, and evidence | Many tasks to one request |
| Equipment Assignments | Required bundle, asset information, delivery state, and handoff | One or more equipment records to one request |
| Onboarding Task Templates | Controlled rules used to generate tasks | TemplateCode copied to each generated task |
| Onboarding Configuration | Operational owner emails, approvers, escalation recipients, and channel references | Read by flows using a unique configuration key |
| Onboarding Automation Log | Errors, duplicate events, retry state, and manual-recovery evidence | Linked to RequestID when available |
Onboarding Requests Fields
| Field | Type | Required | Source or allowed values | Purpose |
|---|---|---|---|---|
| ID | System number | Yes | Created by SharePoint | Internal primary identifier |
| RequestID | Single-line text, unique | Yes after creation | ONB-year-six-digit ID | Readable business identifier |
| DuplicateKey | Single-line text, unique | Yes | Normalized candidate reference and start date | Prevents duplicate requests |
| FormsResponseID | Single-line text | Yes | Microsoft Forms | Source traceability |
| CandidateReference | Single-line text | Yes | Approved hiring record reference | Avoids using sensitive identifiers |
| EmployeeDisplayName | Single-line text | Yes | Form | Operational display name |
| ExpectedWorkEmail | Single-line text | No | Form or later IT update | Expected company email address |
| JobTitle | Single-line text | Yes | Form | Task context |
| RoleFamily | Choice | Yes | Engineering, Product, Sales, Customer Success, Finance, People, Operations, Other | Template matching |
| Department | Choice | Yes | Approved department list | Reporting and ownership |
| EmploymentType | Choice | Yes | Permanent, Fixed Term, Contractor | Template matching |
| WorkMode | Choice | Yes | Office, Hybrid, Remote | Task and equipment matching |
| WorkLocation | Choice | Yes | Primary Office, Secondary Office, Approved Remote Jurisdiction | Facilities and compliance routing |
| StartDate | Date only | Yes | Form | Calculates task due dates |
| Manager | Person | Yes | Internal directory | Approval and task ownership |
| PeopleOpsOwner | Person | Yes | Configuration list | Primary process owner |
| CostCenter | Single-line text | Yes | Approved finance code | Payroll and equipment reference |
| EquipmentBundle | Choice | Yes | Standard Laptop, Developer Laptop, No Device, Nonstandard | Equipment routing |
| PrivilegedAccessRequired | Yes or no | Yes | Form | Conditional IT approval |
| WorkflowStatus | Choice | Yes | Controlled workflow statuses | Main process stage |
| ApprovalStatus | Choice | Yes | Not Started, In Progress, Approved, Needs Information, Rejected | Approval state |
| ManagerApprovalID | Single-line text | No | Approvals connector | Approval evidence |
| ITApprovalID | Single-line text | No | Approvals connector | Conditional approval evidence |
| GenerationStatus | Choice | Yes | Not Started, In Progress, Complete, Partial Failure | Task-generation control |
| TotalBlockingTasks | Number | Yes | Power Automate | Readiness calculation |
| CompletedBlockingTasks | Number | Yes | Power Automate | Readiness calculation |
| ReadinessPercent | Number | Yes | Power Automate, 0 through 100 | Operational reporting |
| ReadinessStatus | Choice | Yes | Not Ready, At Risk, Ready, Exception | Start-date readiness |
| ExternalPayrollID | Single-line text | No | Payroll specialist | Confirms payroll completion without storing financial data |
| HRFolderLink | Hyperlink | No | Power Automate | Restricted HR evidence location |
| ITFolderLink | Hyperlink | No | Power Automate | Restricted IT evidence location |
| AutomationStatus | Choice | Yes | Healthy, Running, Retry Required, Failed | Operational monitoring |
| LastAutomationRun | Date and time | No | Power Automate | Monitoring and reconciliation |
| RetryCount | Number | Yes | Power Automate | Limits repeated recovery attempts |
| ErrorMessage | Multiple-line text | No | Power Automate | Latest actionable failure summary |
| Notes | Multiple-line text | No | Authorized users | Human context and override evidence |
| Created and Modified | System timestamps | Yes | SharePoint | Creation and last-updated audit evidence |
Task, Template, Equipment, and Log Fields
| List and field | Type | Validation | Purpose |
|---|---|---|---|
| Task: TaskKey | Single-line text, unique | RequestID plus TemplateCode | Prevents duplicate task creation |
| Task: Request | Lookup | Valid request item | Parent relationship |
| Task: RequestID | Single-line text, indexed | Copied from parent | Filtering and reporting |
| Task: TemplateCode | Single-line text | Existing active template | Template traceability |
| Task: TaskTitle | Single-line text | Not blank | Required action |
| Task: DepartmentOwner | Choice | People Ops, IT, Payroll, Facilities, Manager | Operational routing |
| Task: AssignedTo | Person | Active internal account | Named owner |
| Task: Status | Choice | Not Started, In Progress, Needs Information, Blocked, Completed, Cancelled | Task stage |
| Task: Priority | Choice | Normal, High, Critical | Reminder and escalation behavior |
| Task: DueDate | Date and time | Calculated from start date and offset | Deadline tracking |
| Task: Blocking | Yes or no | Template-controlled | Determines readiness impact |
| Task: EvidenceRequired | Yes or no | Template-controlled | Determines evidence handling |
| Task: EvidenceStatus | Choice | Not Required, Missing, Uploaded, Verified, Rejected | Document readiness |
| Task: EvidenceLink | Hyperlink | Approved SharePoint location | Links task to evidence |
| Task: CompletedBy and CompletedDate | Person and timestamp | Required when completed | Audit history |
| Task: ReminderCount | Number | Zero or greater | Reminder monitoring |
| Task: EscalationLevel | Number | 0, 1, or 2 | Escalation tracking |
| Task: ExceptionType | Choice | None, Missing Data, Access, Equipment, Document, Automation, Other | Manual-review categorization |
| Template: TemplateCode | Single-line text, unique | Stable code | Template identity |
| Template: AppliesToRoleFamily | Single-line text | All or one approved value | Role matching |
| Template: AppliesToWorkMode | Single-line text | All, Office, Hybrid, or Remote | Work-mode matching |
| Template: AppliesToEmploymentType | Single-line text | All or one approved value | Employment matching |
| Template: AppliesToLocation | Single-line text | All or one approved value | Location matching |
| Template: OwnerRoleKey | Single-line text | Manager or valid configuration key | Resolves task owner |
| Template: DueOffsetDays | Number | Integer, negative or positive | Calendar-day offset from start date |
| Template: CreateEquipmentPlaceholder | Yes or no | Template-controlled | Creates an equipment record |
| Equipment: EquipmentKey | Single-line text, unique | RequestID plus equipment type | Prevents duplicates |
| Equipment: AssetTag | Single-line text | Required when assigned | Links the device to asset inventory |
| Equipment: SerialReference | Single-line text | Restricted to IT | Device verification |
| Equipment: DeliveryStatus | Choice | Not Ordered, Ordered, Configuring, Ready for Pickup, Shipped, Delivered, Handed Over | Equipment readiness |
| Configuration: ConfigKey | Single-line text, unique | Stable approved key | Finds owners and operational settings |
| Log: LogID | System number | System-generated | Error-record identity |
| Log: FlowName and RunReference | Text | Required | Links failure to a flow run |
| Log: Retryable and ResolutionStatus | Yes or no and choice | Open, Retrying, Resolved, Ignored with reason | Dead-letter and recovery control |
List version history is enabled. Attachments are disabled on operational lists so users do not place documents in inconsistent locations. Evidence links must point to approved SharePoint libraries.
Workflow Statuses and Ownership
| Status | Meaning and owner | Entry and exit conditions | Reminder and escalation |
|---|---|---|---|
| Submitted | People Operations owns initial validation. | Created from a valid form response; exits when approval flow starts. | Alert if not picked up within one business hour. |
| Awaiting Manager Approval | Hiring manager owns the decision. | Approval created; exits on approve, needs information, or reject. | Reminder after one business day; escalation after two. |
| Needs Information | People Operations and manager share ownership. | Approver requests correction; exits after fields are corrected and resubmitted. | Daily reminder while start date is within ten days. |
| Awaiting IT Approval | IT approver owns privileged access or nonstandard equipment review. | Manager approved and conditional rule is true; exits on response. | Reminder after one business day; escalation after two. |
| Approved | Automation owns task generation. | Required approvals completed; exits when generation begins. | Immediate failure alert if generation does not start. |
| Tasks Generating | Automation owns creation and synchronization. | GenerationStatus becomes In Progress; exits when complete or partially failed. | Alert if still running beyond the normal processing window. |
| In Progress | Individual task owners perform assigned work. | Tasks have been generated; exits when readiness conditions are met. | Task-level reminders and escalations apply. |
| Ready for Start | People Operations verifies readiness with the manager. | Approvals, blocking tasks, evidence, and equipment satisfy the rules. | No routine reminder; notify manager and People Operations once. |
| Started | People Operations monitors post-start tasks. | Employee has started; exits after required post-start tasks are complete. | Post-start tasks use their own due dates. |
| Closed | People Operations owns closure. | Final human review confirms completion and records are ready for retention. | No reminders. |
| Rejected | People Operations owns follow-up. | An approver rejects the request; resubmission requires a new approval cycle. | Immediate notification to requester and People Operations lead. |
| Automation Exception | Automation support owner investigates. | A critical flow action fails or data cannot be reconciled. | Immediate Teams alert and daily open-exception summary. |
A completed task can be returned to In Progress if evidence is rejected or the start date changes in a way that invalidates the work. Cancellation requires a reason. A request cannot move to Ready for Start while a blocking task is open, required evidence is unverified, equipment is not ready, or a critical exception remains unresolved.
Step-by-Step Implementation
Step 1: Prepare the Accounts and Permissions
Confirm that the Microsoft 365 tenant provides access to Microsoft Forms, Microsoft Lists or SharePoint, Microsoft Teams, Power Automate cloud flows, the required standard connectors, and Microsoft Approvals. Licensing and connector entitlements should be checked against the tenant’s current subscriptions rather than assumed from a plan name.
- Create separate development and production SharePoint sites, or use separate development and production lists within controlled sites if the company does not operate multiple Power Platform environments.
- Create a private Teams team or restricted channel for onboarding operations. Membership should include People Operations, the IT administrator, the payroll specialist, and the designated support owner.
- Create the Microsoft Form as a group-owned form rather than leaving it under one employee’s personal ownership.
- Use a dedicated automation account where company policy permits. The account requires access only to the form, lists, approved libraries, Teams destinations, directory lookup, and approvals used by the workflow.
- Apply multifactor authentication and conditional-access controls to the automation account. Do not share its password among administrators.
- Add at least two flow owners. One should be the primary automation owner and one should be a backup administrator.
- Create connection references for Forms, SharePoint, Teams, Microsoft 365 Users, and Approvals when solution-aware flows are available.
- Create test users representing a People Operations submitter, hiring manager, IT approver, payroll owner, facilities owner, and unauthorized employee.
- Use test lists, test libraries, and a test Teams channel. Do not test with real employee data.
Managers do not require broad access to the operational lists. They receive approval cards and limited Teams notifications. People Operations, IT, and payroll receive access according to their function. Sensitive payroll information remains outside these lists.
No API key, webhook URL, or database password is required for the core implementation. Microsoft connectors authenticate through managed Microsoft 365 connections. Connection ownership and expiration still require monitoring.
Step 2: Build the Intake
Create an internal Microsoft Form named New Hire Onboarding Request. Restrict responses to authorized people in the organization. People Operations submits the form after the hire is approved.
| Question | Type | Required | Validation or condition |
|---|---|---|---|
| Candidate reference | Short text | Yes | Approved reference, 3 to 40 characters |
| Employee display name | Short text | Yes | No payroll or identity numbers |
| Expected work email | Short text | No | Validated by flow if supplied |
| Job title | Short text | Yes | Maximum practical length defined by policy |
| Role family | Choice | Yes | Uses the same approved values as the request list |
| Department | Choice | Yes | Approved department values |
| Employment type | Choice | Yes | Permanent, Fixed Term, or Contractor |
| Work mode | Choice | Yes | Office, Hybrid, or Remote |
| Work location | Choice | Yes | Approved location category |
| Start date | Date | Yes | Business validation rejects an implausible or past date |
| Hiring manager email | Short text | Yes | Must resolve to an active internal account |
| Cost center | Choice or short text | Yes | Matched against approved finance codes |
| Equipment bundle | Choice | Yes | Standard Laptop, Developer Laptop, No Device, Nonstandard |
| Privileged access required | Choice | Yes | Yes or No |
| Access details | Long text | Conditionally required | Shown when privileged access is Yes |
| Nonstandard equipment details | Long text | Conditionally required | Shown when Equipment Bundle is Nonstandard |
| Facilities access required | Choice | Yes | Yes or No |
| Operational notes | Long text | No | Must not contain sensitive payroll, health, or identity information |
| Submission acknowledgement | Choice | Yes | Confirms the data is approved for onboarding use |
Do not use a general attachment question for payroll or identity documents. Remote equipment addresses should be collected through an approved restricted process rather than included in Teams messages or the general request list.
The form confirmation message should explain that a request will be created, the manager may receive an approval, and People Operations will be notified if validation fails. It should also tell submitters not to resubmit simply because a Teams message is delayed.
Forms required fields prevent basic omissions. Power Automate performs business validation for directory accounts, allowed choice values, valid dates, candidate references, and duplicate submissions. Invalid records are sent to a manual-review queue rather than partially processed.
Step 3: Create the System of Record
Create the six lists described in the data structure section. When creating important columns, initially use stable names without spaces, such as RequestID, DuplicateKey, and WorkflowStatus. Display labels can be changed later while internal field names remain stable.
- Enable version history on all operational and configuration lists.
- Disable attachments on the request, task, equipment, template, configuration, and automation-log lists.
- Enforce unique values on
RequestID,DuplicateKey,TaskKey,EquipmentKey,TemplateCode, andConfigKey. - Index
DuplicateKey,WorkflowStatus,StartDate,RequestID,AssignedTo,DueDate, andResolutionStatus. - Set defaults such as WorkflowStatus = Submitted, ApprovalStatus = Not Started, GenerationStatus = Not Started, AutomationStatus = Healthy, RetryCount = 0, ReminderCount = 0, and EscalationLevel = 0.
- Create lookup columns from tasks and equipment to the Onboarding Requests list.
- Retain a text copy of RequestID on child records to support filtering and recovery.
- Create restricted views rather than exposing every column to every operational role.
Create active task templates for the company’s standard process. A small initial library might include account creation, laptop preparation, payroll setup, badge preparation, welcome message, first-week schedule, security training, and role-specific application access.
Each template should match either All or one approved value for each selection dimension. If one task applies to several specific role families, create controlled template variants with separate TemplateCodes. This avoids ambiguous text matching.
Due offsets are stored as calendar days. For example, -7 means seven calendar days before the start date and 2 means two calendar days after it. If the company requires business-day scheduling, add a controlled holiday calendar and a separate date-calculation flow rather than embedding an incomplete weekend rule.
Create these initial views:
- Requests: Active Onboarding
- Requests: Starting in 14 Days
- Requests: Not Ready Within 5 Days
- Requests: Approval Delays
- Requests: Automation Exceptions
- Tasks: My Open Tasks
- Tasks: Overdue Blocking Tasks
- Tasks: Missing Evidence
- Equipment: Not Ready
- Automation Log: Open Retryable Errors
Step 4: Connect the Tools
Create the flows using connections owned by the approved automation account. Interface labels can vary by connector version, but the underlying triggers, conditions, actions, and mappings remain the same.
| Source | Destination | Trigger and authentication | Mapping and returned value |
|---|---|---|---|
| Microsoft Forms | Power Automate | New response trigger using Microsoft 365 connection | Response ID is passed to Get response details |
| Power Automate | Onboarding Requests | Validated response through SharePoint connection | Form fields map to request columns; list item ID is returned |
| Onboarding Requests | Microsoft Approvals | Request status becomes Submitted | Request summary maps to approval; Approval ID is returned |
| Onboarding Task Templates | Onboarding Tasks | Approved request with generation not started | Matching template fields create tasks; task item IDs are returned |
| Onboarding Requests | SharePoint libraries | Request creation | RequestID becomes folder name; folder links return to request |
| Onboarding Tasks | Microsoft Teams | New task, reminder, or escalation | Owner, title, due date, RequestID, and controlled link map to message |
| Requests, tasks, and equipment | Readiness rollup | Scheduled recurrence | Counts and states update the parent request |
| Existing payroll platform | Onboarding Requests | Human completion of payroll task | Payroll specialist enters non-sensitive external employee ID |
Use the Microsoft 365 Users connector to validate the manager email and retrieve the manager’s directory profile. If the email does not resolve, stop the request before approval and mark it Needs Information.
For SharePoint Get items actions, use indexed filters whenever possible. Enable pagination where a query can return more than one connector page, and set the threshold above the expected active-record count while remaining within tenant policy. Queries for one request should filter by the indexed RequestID rather than retrieving the whole list.
Store returned identifiers immediately. The request stores the Forms response ID and approval IDs. Child records store TaskKey or EquipmentKey. The flow does not depend on a Teams message identifier for business state.
Step 5: Build the Core Automation
Flow ONB-01: Intake and Request Creation
- Trigger: Microsoft Forms reports a new response.
- Conditions: Required values exist, manager resolves in the directory, choices are approved, and the duplicate key does not exist.
- Actions: Get response details, initialize normalized variables, validate, query duplicates, create request, generate RequestID, update request, create document folders, and post receipt.
- Fields updated: RequestID, DuplicateKey, FormsResponseID, WorkflowStatus, folder links, AutomationStatus, and LastAutomationRun.
- Notification: People Operations receives a Teams receipt containing RequestID and validation status.
- Exception: Invalid data or a critical connector failure creates an automation-log entry and marks the request for manual review.
The exact action order is:
- Trigger on a new Forms response.
- Get response details using the returned response ID.
- Initialize text, date, Boolean, and integer variables.
- Trim text and normalize the candidate reference to lowercase for duplicate checking.
- Validate the manager through Microsoft 365 Users.
- Validate the start date and controlled choices.
- Create the DuplicateKey.
- Query Onboarding Requests for the key, returning at most one item.
- If a record exists, log a Duplicate Event, notify the submitter, and terminate successfully without creating a record.
- If no record exists, create the request with AutomationStatus = Running.
- Use the returned list item ID to generate RequestID.
- Update the request with RequestID and system defaults.
- Run two nondependent branches: create restricted folders and post an operational receipt.
- Update folder links, AutomationStatus = Healthy, and LastAutomationRun.
Critical record creation is completed before parallel branches begin. A failed Teams post does not delete or roll back a valid request. It creates a notification error in the automation log.
Flow ONB-02: Approval Orchestration
- Trigger: A request is created or modified with WorkflowStatus = Submitted and ApprovalStatus equal to Not Started or Resubmit.
- Conditions: RequestID exists, manager is valid, and no active approval is already recorded.
- Actions: Mark approval in progress, create manager approval, wait for response, evaluate response, optionally create IT approval, and update status.
- Fields updated: WorkflowStatus, ApprovalStatus, ManagerApprovalID, ITApprovalID, responder details, timestamps, comments, and AutomationStatus.
- Notification: The approver receives the approval through Microsoft Approvals and supported Microsoft 365 clients. Teams reminders are sent separately.
- Exception: Approval creation failure is not automatically repeated until the system checks whether an Approval ID already exists.
Before creating an approval, update ApprovalStatus to In Progress. This prevents another list modification from starting a second approval flow. Use a custom-response approval with three responses: Approve, Needs Information, and Reject.
If the manager approves, evaluate these conditions:
- PrivilegedAccessRequired is Yes.
- EquipmentBundle is Nonstandard.
If either is true, route a second sequential approval to the IT approver read from the configuration list. Parallel approval is not used because the manager must first confirm the requested access and equipment. If neither condition is true, mark the request Approved.
If an approver selects Needs Information, set WorkflowStatus and ApprovalStatus to Needs Information. People Operations corrects the controlled request record, records a note, and sets ApprovalStatus to Resubmit and WorkflowStatus to Submitted. The flow then starts a new approval and retains the earlier approval ID as history.
Flow ONB-03: Task and Equipment Generation
- Trigger: A request changes to Approved while GenerationStatus is Not Started.
- Conditions: ApprovalStatus is Approved, RequestID exists, and no critical request error is open.
- Actions: Set generation in progress, read active templates, filter applicable templates, resolve owners, check TaskKey, create missing tasks, create equipment placeholders, and finish generation.
- Fields updated: GenerationStatus, WorkflowStatus, TotalBlockingTasks, AutomationStatus, RetryCount, and LastAutomationRun.
- Notification: Task owners receive Teams notifications; People Operations receives a generation summary.
- Exception: Failed template rows are logged individually. Successful rows remain valid and the request becomes Partial Failure.
Turn off parallel execution in the template loop when variables such as failure counts are updated. For every matching template:
- Build TaskKey from RequestID and TemplateCode.
- Query tasks for that key.
- If the task already exists, log it as an idempotent skip.
- Resolve AssignedTo. Manager-owned tasks use the request manager; other tasks use OwnerRoleKey to query the configuration list.
- Calculate DueDate by adding DueOffsetDays to StartDate.
- Create the task with default status and evidence state.
- If CreateEquipmentPlaceholder is true, build EquipmentKey and create the equipment row only if it does not already exist.
- Post a Teams notification to the responsible owner or controlled department channel.
After the loop, set GenerationStatus to Complete when the failure count is zero. If one or more rows fail, set GenerationStatus to Partial Failure, WorkflowStatus to Automation Exception, and AutomationStatus to Retry Required.
Manual recovery consists of correcting the cause, setting GenerationStatus to Not Started, and selecting an authorized Retry Requested field. Existing TaskKeys and EquipmentKeys prevent duplicates.
Flow ONB-04: Readiness Rollup
- Trigger: Scheduled recurrence every 15 minutes.
- Conditions: Request is active and not Closed, Rejected, or awaiting initial approval.
- Actions: Retrieve related tasks and equipment, calculate counts, test readiness rules, update parent, and post transition notifications.
- Fields updated: TotalBlockingTasks, CompletedBlockingTasks, ReadinessPercent, ReadinessStatus, WorkflowStatus, and LastAutomationRun.
- Notification: A message is posted only when readiness changes to Ready or Exception.
- Exception: A failed rollup keeps the previous readiness value, marks AutomationStatus as Retry Required, and logs the failure.
A request is Ready only when all these conditions are true:
- ApprovalStatus is Approved.
- Every blocking task is Completed.
- Every task requiring evidence has EvidenceStatus = Verified.
- Required equipment is Ready for Pickup, Shipped according to approved policy, Delivered, or Handed Over.
- No critical open automation error exists.
The scheduled design avoids maintaining several nearly identical child-item triggers. A 15-minute delay is acceptable for operational reporting. Companies requiring immediate event-driven rollups can create separate task and equipment triggers or use a controlled child-flow pattern.
Step 6: Add Approvals, Reminders, and Escalations
The approval process is sequential. Manager confirmation occurs first. Conditional IT approval occurs second. Payroll setup, facilities work, and standard IT provisioning are tasks rather than approvals.
| Approval | Condition | Approver | Responses | Evidence |
|---|---|---|---|---|
| Manager confirmation | Every valid request | Hiring manager | Approve, Needs Information, Reject | Approval ID, responder, date, comments |
| IT review | Privileged access or nonstandard equipment | Configured IT approver | Approve, Needs Information, Reject | Approval ID, responder, date, comments |
| Manual override | Approval service unavailable or documented exception | People Operations lead plus relevant functional owner | Approved exception or rejected exception | Reason, approvers, date, supporting record |
Create a scheduled reminder flow that runs on business days in the company’s operating time zone.
- Retrieve requests awaiting approval.
- If the approval age is at least one business day and no reminder was sent that day, notify the approver in Teams.
- If the approval age reaches two business days, notify the approver, People Operations owner, and configured backup.
- If the start date is within five calendar days, mark the request At Risk.
- Retrieve open tasks with a due date on or before the reminder horizon.
- Send upcoming reminders according to task priority.
- For overdue tasks, increment ReminderCount and set EscalationLevel.
- At escalation level one, notify the task owner and department lead.
- At escalation level two, notify People Operations and the hiring manager.
Unavailable approvers can reassign an approval where the tenant’s approval client permits reassignment. If reassignment is not available or appropriate, People Operations records the unavailable approver, uses the documented manual-override path, and preserves evidence from both required decision-makers.
A late response from a superseded approval must not overwrite a current decision. Before processing any response, the flow compares the returned Approval ID with the active approval ID stored on the request.
Step 7: Add Documents and File Management
Create two restricted SharePoint libraries:
- HR Onboarding Evidence: Accessible only to authorized People Operations users.
- IT Onboarding Evidence: Accessible to authorized IT staff and designated People Operations administrators.
Do not place tax forms, bank instructions, identity documents, medical records, or compensation documents in the general onboarding library. Those records belong in the payroll or HR system approved for that data.
Use this folder structure:
HR Onboarding Evidence/
Active/
2026/
ONB-2026-000184/
Closed/
2026/
IT Onboarding Evidence/
Active/
2026/
ONB-2026-000184/
Closed/
2026/
This configuration is used in the SharePoint folder-creation actions. Replace the year and RequestID with dynamic values. The expected output is a folder path and link stored on the request. Test it with a sample RequestID and verify that the automation account can create the folder while an unauthorized test user cannot open it. A forbidden response indicates a permission problem; an existing-folder response should be treated as an idempotent success after the path is verified.
Use a naming convention such as:
RequestID_DocumentType_YYYYMMDD_v01.ext
Example:
ONB-2026-000184_ManagerAccessConfirmation_20260810_v01.pdf
This naming configuration is applied by document owners before upload or by a controlled file action when the document is generated. The input is RequestID, approved document type, date, and version. The output is a searchable file name. Test with non-sensitive sample files and confirm that unsupported characters are removed. SharePoint version history should remain the authoritative revision history even when the visible file name contains a version label.
Task records track whether evidence is required, missing, uploaded, verified, or rejected. The EvidenceLink points to the controlled file. Replacing evidence should create a new file version or a clearly named replacement, not overwrite an unrelated document.
A missing file leaves the related task incomplete. A failed upload creates an automation-log entry if automation performed the upload. If a human upload fails, the user keeps the task In Progress and reports the issue to the operational owner. File-size and file-type rules must follow the tenant’s current SharePoint policy.
When the request closes, an authorized archival flow moves the request folder from Active to Closed if retention policy permits. Retention labels and deletion rules should be defined with the company’s legal, privacy, and records-management owners.
Step 8: Add Reporting and Operational Views
The initial reporting layer uses Microsoft Lists views because the operating volume does not require a separate analytics platform. Views read live list data, while readiness fields refresh every 15 minutes.
| View | Filter | Owner | Alert threshold |
|---|---|---|---|
| New Requests | Created today and active | People Operations | Submitted for more than one business hour |
| Awaiting Approval | Manager or IT approval pending | People Operations | Pending for two business days |
| Starting Soon, Not Ready | Start date within five days and not Ready | People Operations lead | Any record |
| My Open Tasks | AssignedTo equals current user and status open | Each task owner | Due within two days |
| Overdue Blocking Tasks | Blocking is Yes, status open, due date passed | Department leads | Any task two days overdue |
| Incomplete Evidence | Evidence required and not Verified | People Operations or IT | Start date within five days |
| Equipment Not Ready | Required equipment not in an accepted readiness state | IT | Start date within five days |
| Manual Review | Needs Information, Blocked, or exception type not None | People Operations | Any critical item |
| Rejected Requests | WorkflowStatus is Rejected | People Operations lead | Review within one business day |
| Automation Failures | Open automation-log records | Automation owner | Immediate for critical failures |
| Recently Completed | Closed within the previous 30 days | People Operations | No automatic alert |
Create calculated operational metrics through Power Automate, not cross-list calculated columns. Useful measures include total active requests, readiness rate, overdue blocking tasks, average elapsed time from submission to approval, average elapsed time from approval to Ready, and volume by role family or work mode.
A daily Teams summary should show counts and controlled links, not sensitive notes. A weekly summary can report volume, readiness, overdue tasks, exceptions, and automation failures. People Operations owns the business definitions; the automation owner maintains the calculations.
Step 9: Add Security and Governance Controls
- Grant the automation account only the list, library, Teams, and approval access required by the flows.
- Restrict operational-list membership to People Operations and necessary functional staff.
- Do not rely on hidden list columns as a security control. Users with list access may be able to access underlying field values.
- Exclude compensation, bank, tax, health, identity, and disciplinary data from the operational lists.
- Use separate libraries rather than many unique folder permissions where possible.
- Restrict anonymous and external sharing for onboarding libraries.
- Use managed connections and approved secret storage. No credentials should appear in flow names, notes, Teams messages, or list fields.
- Enable list and library version history and retain Power Automate run history according to policy.
- Review guest users, former employees, owners, service accounts, and group membership regularly.
- Back up configuration and template lists through an approved export or platform backup process.
- Apply retention policies based on the company’s employment, legal, privacy, and records requirements.
- Record every manual override with reason, approvers, date, and supporting evidence.
- Require human approval for privileged access, nonstandard equipment, policy exceptions, and final closure.
- Prevent the optional AI assistant from accessing operational request, payroll, or employee-relations data.
Managers receive only the information needed to approve their own request. Broad dashboards remain restricted. Teams messages use RequestID, employee display name, task title, owner, due date, and controlled links. They do not include personal addresses or payroll information.
Step 10: Deploy and Test
- Build all lists, templates, flows, libraries, and Teams destinations in the test environment.
- Create at least one sample request for every work mode, employment type, equipment bundle, and approval branch.
- Use test accounts to perform manager, IT, payroll, facilities, and People Operations actions.
- Run technical tests for duplicate events, connector failure, folder conflicts, invalid users, approval rejection, and retry recovery.
- Complete user acceptance testing with the People Operations coordinator, IT administrator, payroll specialist, office coordinator, and two managers.
- Compare generated tasks against the approved onboarding policy. Resolve missing or unnecessary templates before launch.
- Pilot the system with two non-sensitive sample cases and then a small number of real onboarding requests after approval.
- Keep the former checklist available as a documented rollback process during the pilot. Do not operate both systems as independent sources of truth.
- Export the production flow solution or package, template configuration, and field dictionary before activation.
- Activate flows in this order: intake, approval, generation, readiness, reminders, and reporting summaries.
- Monitor every run during the first production week and review all open automation-log records daily.
- Publish a short operating guide showing how to submit, approve, complete tasks, add evidence, resolve errors, and request support.
If rollback is required, turn off approval and generation triggers first, prevent new form submissions, export open requests, and continue from the controlled fallback checklist. Existing list records should remain read-only for investigation rather than being deleted.
Code and Configuration
No custom JavaScript, Python, SQL, webhook handler, or external API is required for the core implementation. Microsoft Forms, SharePoint, Power Automate, Approvals, and Teams provide the required triggers and actions through native connectors.
The following expressions and configuration values are still required. Power Automate action names can be changed, but expressions referencing an action must use that action’s internal name.
Environment Configuration
ONBOARDING_FORM_ID=YOUR_FORM_ID
REQUESTS_SITE_URL=YOUR_SHAREPOINT_SITE_URL
REQUESTS_LIST_NAME=Onboarding Requests
TASKS_LIST_NAME=Onboarding Tasks
EQUIPMENT_LIST_NAME=Equipment Assignments
TEMPLATES_LIST_NAME=Onboarding Task Templates
CONFIG_LIST_NAME=Onboarding Configuration
LOG_LIST_NAME=Onboarding Automation Log
HR_LIBRARY_NAME=HR Onboarding Evidence
IT_LIBRARY_NAME=IT Onboarding Evidence
OPERATIONS_TEAM_ID=YOUR_TEAM_ID
OPERATIONS_CHANNEL_ID=YOUR_CHANNEL_ID
AUTOMATION_OWNER_EMAIL=YOUR_EMAIL_ADDRESS
Store these values as environment variables when solution-aware flows are available. Otherwise, document them in a restricted deployment record and select the corresponding resources in each connector action. The values contain identifiers, not passwords. Test each connection with a read action before enabling triggers. An invalid site, list, team, or channel identifier usually produces a not-found or forbidden connector error.
Duplicate Key
concat(
toLower(trim(variables('CandidateReference'))),
'|',
formatDateTime(variables('StartDate'), 'yyyy-MM-dd')
)
Place this expression in a Compose action named Compose_DuplicateKey after the CandidateReference and StartDate variables are validated. Its input is the normalized candidate reference and start date. Its output should resemble cnd-1048|2026-08-17. Map the result to DuplicateKey and use it in the indexed Get items filter. Test with differences in capitalization and spaces. An invalid date causes formatDateTime to fail, so date validation must occur first.
Use this filter-query pattern in the Get items action:
DuplicateKey eq '@{outputs('Compose_DuplicateKey')}'
Place this value in the SharePoint Get items Filter Query field and set the returned-item limit to one. The expected output is an empty array for a new request or one item for a duplicate. Because the key is built from controlled characters and a date, it avoids the quote-escaping problem associated with free-form names. If the query returns an invalid-field error, verify the column’s internal name.
Readable Request ID
concat(
'ONB-',
formatDateTime(utcNow(), 'yyyy'),
'-',
formatNumber(outputs('Create_request')?['body/ID'], '000000')
)
Place this expression after the SharePoint Create item action named Create_request. It requires the returned numeric item ID and produces a value such as ONB-2026-000184. Test by creating a sample request and confirming that the six-digit suffix matches the SharePoint ID. If the action has a different internal name, replace Create_request in the expression.
Task-Template Applicability
@and(
equals(item()?['Active'], true),
or(
equals(item()?['AppliesToRoleFamily'], 'All'),
equals(item()?['AppliesToRoleFamily'], variables('RoleFamily'))
),
or(
equals(item()?['AppliesToWorkMode'], 'All'),
equals(item()?['AppliesToWorkMode'], variables('WorkMode'))
),
or(
equals(item()?['AppliesToEmploymentType'], 'All'),
equals(item()?['AppliesToEmploymentType'], variables('EmploymentType'))
),
or(
equals(item()?['AppliesToLocation'], 'All'),
equals(item()?['AppliesToLocation'], variables('WorkLocation'))
)
)
Use this expression in advanced mode in a Filter array action. The input array is the value returned from Get items on the template list. The output is the subset matching the request. Test with one request from each work mode and compare the resulting template codes with the approved checklist. If a connector returns a Choice field as an object rather than text, use the dynamic Choice Value output or its Value property. Inspect test-run output rather than guessing the connector shape.
Task Key and Due Date
Task key:
concat(
variables('RequestID'),
'|',
items('Apply_to_each_template')?['TemplateCode']
)
Due date:
formatDateTime(
addDays(
variables('StartDate'),
int(items('Apply_to_each_template')?['DueOffsetDays'])
),
'yyyy-MM-dd'
)
Place these expressions inside the template loop. Their inputs are RequestID, TemplateCode, StartDate, and DueOffsetDays. The outputs are a unique task key and a date-only due value. Test negative, zero, and positive offsets. A blank or nonnumeric offset causes int to fail, so the template-maintenance process must validate that field.
Task-Generation Trigger Condition
@and(
equals(triggerOutputs()?['body/WorkflowStatus/Value'], 'Approved'),
equals(triggerOutputs()?['body/GenerationStatus/Value'], 'Not Started')
)
Place this expression in the trigger settings for the request-created-or-modified flow. It prevents unnecessary runs. In some connector versions, a Choice value may be exposed directly without /Value. Confirm the actual trigger output in a test run and adjust only the property path. Test by editing an unrelated field on an In Progress request and verify that no generation run starts.
Readiness Percentage
if(
equals(length(body('Filter_required_tasks')), 0),
0,
div(
mul(length(body('Filter_completed_required_tasks')), 100),
length(body('Filter_required_tasks'))
)
)
Place this expression after two Filter array actions named Filter_required_tasks and Filter_completed_required_tasks. The first contains blocking tasks. The second contains blocking tasks that satisfy completion and evidence rules. The output is an integer percentage. Zero required tasks returns zero so an incomplete template configuration does not incorrectly report readiness. Test with zero, partial, and fully completed task sets.
Teams Task Message
Onboarding task assigned
Request: {RequestID}
Employee: {EmployeeDisplayName}
Task: {TaskTitle}
Due: {DueDate}
Priority: {Priority}
Open the controlled task record: {TaskLink}
Use this template in the Teams post-message action and map each placeholder from the request or task. The expected output is a concise operational message. Test the link using an authorized and unauthorized account. If the Teams action fails, log the error and continue processing the task because notification delivery is not the source of truth.
Scope and Retry Configuration
Each flow uses three scopes:
- Try: Contains the business actions.
- Catch: Runs after Try has failed or timed out. It writes the automation log, updates the request when possible, and notifies the support owner.
- Finally: Runs after Try or Catch and records the final timestamp and flow result when the destination is available.
Configure SharePoint reads, updates, and Teams notifications with an exponential retry policy where supported. Use a conservative retry count appropriate to tenant policy. Do not blindly retry approval creation because an approval may have been created even when the response was not returned. Before manual approval retry, check the stored Approval ID and approval center.
For task creation, retry only after querying TaskKey. For folder creation, verify whether the folder already exists. These checks make repeated flow execution idempotent.
Deploy flows in the off state, replace all placeholders, establish production connections, run controlled sample tests, inspect run history and action inputs and outputs, and then activate flows in dependency order.
Failure Handling and Operational Reliability
| Failure | Automated response | Manual recovery | Owner |
|---|---|---|---|
| Missing required data | Stop before approval and mark Needs Information. | Correct the request and resubmit approval. | People Operations |
| Duplicate form event | Find DuplicateKey, log the event, and create nothing. | Confirm the existing RequestID is valid. | Automation owner |
| Duplicate task event | Find TaskKey and skip creation. | Reconcile only if task fields are incomplete. | Automation owner |
| Invalid choice value | Reject validation and record the supplied value. | Correct form choices or template configuration. | People Operations |
| Invalid manager email | Do not create approval; set Needs Information. | Select an active directory user. | People Operations |
| Authentication expiry | Connector actions fail and Catch logs the connection name. | Reauthenticate or replace the connection, then retry. | Power Platform administrator |
| Partial task generation | Keep successful tasks, log failed templates, and set Partial Failure. | Fix configuration and restart generation. Unique keys prevent duplicates. | Automation owner |
| Approval unavailable | Send reminders and escalate to People Operations. | Reassign or use documented manual override. | People Operations lead |
| Approval timeout | Catch records timeout without assuming rejection. | Check approval status before creating a replacement. | Automation owner |
| Folder creation failure | Mark Automation Exception and do not claim evidence readiness. | Correct permissions or path and rerun folder action. | SharePoint owner |
| File upload failure | Leave evidence Missing and log connector error when automated. | Upload through the restricted library and update EvidenceLink. | Document owner |
| Failed Teams notification | Log as noncritical and continue the underlying transaction. | Open the task view or resend the message. | Automation owner |
| Rate limit or throttling | Apply backoff and retry to safe read or update actions. | Reduce concurrency, narrow queries, and retry failed records. | Automation owner |
| Flow timeout | Catch records the last completed stage. | Reconcile identifiers before restarting. | Automation owner |
| Unresolved critical error | Create an open automation-log record and set readiness Exception. | Resolve, document the action, and rerun rollup. | Support owner |
The Onboarding Automation Log acts as a dead-letter queue. Each entry includes the flow name, run reference, RequestID, action name, error category, sanitized error message, whether retry is safe, retry count, assigned owner, and resolution status.
Staff identify failures through the Automation Exceptions request view, the open log view, immediate Teams alerts, and a daily unresolved-error summary. Recovery never starts by deleting records. Staff first identify which external IDs, approval IDs, tasks, folders, or messages already exist.
A weekly reconciliation flow compares active approved requests with generated tasks. It identifies requests with zero tasks, tasks without a valid parent, duplicate business references, readiness values older than the expected rollup interval, and open errors marked resolved incorrectly.
A Complete Example
People Operations submits an onboarding request for Jordan Lee, a fictional new employee of the representative company.
| Field | Value |
|---|---|
| Candidate reference | CND-1048 |
| Employee | Jordan Lee |
| Job title | Customer Success Manager |
| Role family | Customer Success |
| Employment type | Permanent |
| Work mode | Hybrid |
| Location | Primary Office |
| Start date | August 17, 2026 |
| Equipment | Standard Laptop |
| Privileged access | No |
| Facilities access | Yes |
- Microsoft Forms returns response ID
482. - Power Automate retrieves the response, resolves the manager account, and creates DuplicateKey
cnd-1048|2026-08-17. - The duplicate query returns no records.
- SharePoint creates request item ID
184. - Power Automate generates RequestID
ONB-2026-000184and updates the request. - The flow creates restricted HR and IT folders using the RequestID.
- The manager receives an approval containing the role, work mode, start date, equipment bundle, and requested access.
- The manager selects Approve and adds a note confirming the first-week schedule.
- The IT approval condition evaluates to false because the equipment is standard and privileged access is not requested.
- The request changes to Approved and task generation begins.
- The template filter selects 14 tasks, including payroll setup, account creation, laptop configuration, badge preparation, welcome message, manager schedule, security training, and customer-success application access.
- Each task receives a key such as
ONB-2026-000184|IT-ACCOUNT-001. - An equipment placeholder is created with key
ONB-2026-000184|LAPTOP. - Teams posts controlled task notifications to the assigned owners.
- IT assigns internal equipment record
EQ-000417, prepares the laptop, and changes delivery status to Ready for Pickup. - Payroll enters the employee in the existing payroll system and records external payroll reference
PAY-7842on the restricted request field. - The facilities badge task becomes Blocked because the approved access photograph is missing. The scheduled reminder escalates the task to People Operations after its due date.
- People Operations obtains the missing item through the approved process. Facilities completes the badge task and records its evidence link.
- The readiness rollup finds 11 blocking tasks, 11 completed blocking tasks, verified required evidence, ready equipment, and no critical errors.
- ReadinessPercent becomes 100, ReadinessStatus becomes Ready, and WorkflowStatus becomes Ready for Start.
- Teams notifies People Operations and the hiring manager. After Jordan starts and post-start tasks are complete, People Operations performs the final review and closes the request.
The badge exception did not require a duplicate checklist or a separate reconciliation email. It remained visible as a blocked task, generated a defined escalation, and retained its resolution history.
Implementation Cost
The following amounts are representative planning assumptions in US dollars. They are not Microsoft pricing, an Intelligex quote, or verified client results. Each organization should replace them with its licensing, labour, security, and implementation costs.
| Activity | Hours | Assumed loaded rate | Estimated value |
|---|---|---|---|
| Requirements and process design | 8 | $48 per hour | $384 |
| Forms, Lists, libraries, and permissions | 18 | $48 per hour | $864 |
| Power Automate configuration | 24 | $48 per hour | $1,152 |
| Technical and user acceptance testing | 10 | $48 per hour | $480 |
| Training | 4 | $48 per hour | $192 |
| Documentation and deployment | 6 | $48 per hour | $288 |
| Total internal implementation | 70 | $48 per hour | $3,360 |
| Cost | Assumption | Estimated amount | Treatment |
|---|---|---|---|
| Existing Microsoft 365 subscriptions | Already used by the company | Existing baseline | Not counted as incremental cost |
| Core platform allowance | Planning allowance pending tenant licensing review | $35 per month | Included in savings calculation |
| Monthly maintenance labour | 2 hours at $48 per hour | $96 per month | Included as labour in the new process |
| Optional AI usage allowance | Planning placeholder, not vendor pricing | $20 per month | Excluded from core calculation |
| Optional professional implementation | 50 to 75 hours at an assumed $175 per hour | $8,750 to $13,125 | Alternative to part of the internal build, not automatically additive |
A professional implementation would still require internal participation for requirements, security review, testing, and process ownership. A company should not assume that existing software eliminates implementation or maintenance labour.
Estimated Time and Cost Savings
The calculation measures onboarding coordination and administration. It does not treat necessary work such as laptop configuration, payroll entry, manager planning, or security review as removable labour.
| Assumption | Value |
|---|---|
| Monthly onboarding volume | 6 requests |
| Current coordination time | 240 minutes per request |
| New coordination time | 75 minutes per request |
| Exception rate | 20 percent |
| Exception handling time | 25 minutes per exception |
| Monthly maintenance | 2 hours |
| Loaded labour cost | $48 per hour |
| Recurring software allowance | $35 per month |
| One-time internal implementation cost | $3,360 |
Current monthly labour hours: Monthly volume × current minutes per record ÷ 60
Actual calculation: 6 × 240 ÷ 60 = 24 hours
New monthly labour hours: Monthly volume × new minutes per record ÷ 60, plus exception handling and maintenance
Actual calculation: 6 × 75 ÷ 60 + 6 × 20% × 25 ÷ 60 + 2 = 7.5 + 0.5 + 2 = 10 hours
Monthly hours recovered: Current monthly labour hours minus new monthly labour hours
Actual calculation: 24 – 10 = 14 hours
Estimated monthly labour value: Monthly hours recovered × loaded hourly labour cost
Actual calculation: 14 × $48 = $672
Net estimated monthly value: Monthly labour value minus recurring tool costs
Actual calculation: $672 – $35 = $637
Estimated payback period: One-time implementation cost ÷ net estimated monthly value
Actual calculation: $3,360 ÷ $637 = approximately 5.3 months
Recovered time does not automatically reduce payroll. It may provide additional capacity, quicker turnaround, reduced overtime, fewer administrative tasks, the ability to handle a higher hiring volume, or lower dependence on one coordinator.
Non-financial benefits include clearer ownership, fewer status emails, more consistent checklists, earlier identification of missing information, stronger audit evidence, more reliable readiness reporting, and a more organized experience for managers and new employees.
Readers should replace the monthly volume, handling time, exception rate, loaded labour cost, software allowance, maintenance hours, and implementation cost with their own figures.
Adding AI to the Automation
AI is optional and should be added only after the deterministic workflow operates reliably. The core system does not need AI to validate required fields, match exact template values, calculate due dates, route approvals, count tasks, enforce permissions, or determine whether blocking work is complete.
Potential AI uses include summarizing onboarding guidance, classifying employee questions, suggesting relevant approved articles, identifying themes in unanswered questions, and helping People Operations draft responses.
AI should not decide whether access is approved, whether payroll is correct, whether a policy exception is permitted, or whether an employee meets a legal or benefits requirement. Those decisions require deterministic rules and authorized people.
The Recommended AI Enhancement
The recommended enhancement is a Microsoft Copilot Studio onboarding assistant published in Teams and grounded in an approved SharePoint onboarding knowledge site. A Power Automate flow logs unanswered or escalated questions to a restricted Microsoft List.
The knowledge site contains approved information about the first week, equipment support, security setup, workplace access, payroll contact routes, benefit-information sources, hybrid-work procedures, and manager expectations. Each page has a named owner, approval date, and review date.
- Trigger: An employee asks the onboarding assistant a question in Teams.
- AI input: The question and limited non-sensitive context such as work mode, role family, and onboarding phase.
- System instruction: Answer only from approved onboarding knowledge and escalate unsupported or sensitive questions.
- User prompt: The employee’s question plus approved context.
- Expected output: A concise answer with source titles or a controlled escalation.
- Validation: Require an allowed answer status, at least one source for answered questions, and no prohibited data.
- Record update: Log timestamp, category, answer status, source titles, and escalation owner.
- Human review: People Operations reviews escalated questions and a sample of routine answers.
- Low-confidence handling: Do not provide a definitive answer when sources are absent, contradictory, or marked low confidence.
- Prohibited data: Payroll amounts, bank data, tax identifiers, medical data, passwords, access secrets, disciplinary information, and legal conclusions.
- Failure behavior: Display the approved contact route and log the service failure.
Use this instruction in the agent’s main instruction area or in a structured prompt action supported by the selected Copilot Studio configuration:
You are the employee onboarding information assistant for this company.
Use only the approved onboarding knowledge supplied to you. Do not use general knowledge to fill gaps.
Answer routine questions about approved onboarding procedures, first-week activities, equipment support, security setup, workplace access, payroll contact routes, and published company resources.
Do not make decisions about access approval, compensation, payroll calculations, benefits eligibility, legal rights, medical matters, policy exceptions, performance, discipline, or employment status.
Do not request or repeat passwords, bank details, tax identifiers, government identity numbers, medical information, or other sensitive personal data.
If the approved sources do not directly support an answer, set answer_status to needs_human. If the question contains prohibited data or asks for a prohibited decision, set answer_status to prohibited.
Cite the title of every approved source used. Treat confidence as a routing hint, not a probability.
Employee context:
Work mode: {WORK_MODE}
Role family: {ROLE_FAMILY}
Onboarding phase: {ONBOARDING_PHASE}
Employee question:
{USER_QUESTION}
Return only an object matching the configured JSON schema.
Replace the four placeholders with conversation variables. The prompt receives no request-list record, payroll data, equipment serial number, or approval history. Test it with approved, unsupported, ambiguous, and prohibited questions. If the model returns prose outside the structured object, route the response to human review rather than attempting to display it as a verified answer.
Configure the structured output with this schema:
{
"type": "object",
"additionalProperties": false,
"required": [
"answer_status",
"answer",
"source_titles",
"confidence",
"escalation_category",
"follow_up_question"
],
"properties": {
"answer_status": {
"type": "string",
"enum": ["answered", "needs_human", "prohibited"]
},
"answer": {
"type": "string"
},
"source_titles": {
"type": "array",
"items": {
"type": "string"
}
},
"confidence": {
"type": "string",
"enum": ["high", "medium", "low"]
},
"escalation_category": {
"type": "string",
"enum": ["None", "PeopleOps", "IT", "Payroll", "Manager", "Security"]
},
"follow_up_question": {
"type": "string"
}
}
}
Place this schema in the structured-response configuration supported by the prompt action. The expected output is one valid object with no extra properties. Validate that answer_status is allowed, source titles are present when the status is answered, and low-confidence output is not presented as authoritative. A schema or parsing error creates a restricted assistant-log entry and displays the human-support route.
The logging flow writes only approved metadata by default. Full question text should be stored only if privacy review authorizes it. Cost monitoring should track monthly AI usage, question volume, escalation rate, service failures, and knowledge-maintenance effort.
Benefits of the AI Enhancement
The core automation already creates tasks, assigns ownership, manages approvals, tracks readiness, and sends reminders. AI does not create those benefits.
The AI-specific benefits are narrower:
- Less People Operations time spent repeatedly answering routine questions
- Faster discovery of approved onboarding instructions
- More consistent routing of questions to People Operations, IT, payroll, security, or managers
- Earlier identification of outdated or missing knowledge articles
- Summaries of common question themes without manually reading every conversation
- A controlled fallback when the approved knowledge does not support an answer
The assistant does not eliminate human review. Its primary purpose is to improve access to approved information and route unsupported questions appropriately.
What Remains Rule-Based or Human-Controlled
| Decision | Control | Reason |
|---|---|---|
| Manager onboarding approval | Named manager approval | Confirms business need and requested resources |
| Privileged access | IT or security approval | High-impact security decision |
| Payroll entry | Payroll specialist | Financial and personal-data control |
| Benefits eligibility | Approved policy and authorized HR staff | Requires accurate policy interpretation |
| Nonstandard equipment | Manager and IT approval | Cost, compatibility, and security implications |
| Policy exceptions | Authorized policy owner | Requires accountability and documented judgment |
| Employment or legal conclusions | Authorized HR or legal reviewer | High-impact decision requiring professional review |
| Request readiness | Deterministic rules plus People Operations review | Exact task, evidence, equipment, and approval states are available |
| Final closure | People Operations | Confirms audit evidence and unresolved exceptions |
Estimating the Additional Value of AI
The following estimate is a planning scenario, not a performance claim.
| Assumption | Value |
|---|---|
| Onboarding questions per month | 72, based on 12 questions for each of 6 hires |
| Original handling time | 4 minutes per question |
| Core automation without AI | 3 minutes per question because links are centralized |
| Questions answered routinely by AI | 60 percent, or approximately 43 |
| Questions escalated to a person | Approximately 29 |
| AI-answer sample rate | 20 percent |
| Correction rate within sampled answers | 10 percent |
| AI service-failure assumption | 3 percent of questions |
| Monthly AI knowledge maintenance | 30 minutes |
| AI usage allowance | $20 per month |
Original question-handling time: 72 × 4 ÷ 60 = 4.8 hours
Core automation without AI: 72 × 3 ÷ 60 = 3.6 hours
Automation with AI: 29 escalations × 3 minutes + 9 sampled answers × 2 minutes + 2 service failures × 3 minutes + 1 correction × 3 minutes + 30 minutes maintenance = 144 minutes, or 2.4 hours
Additional capacity from AI: 3.6 – 2.4 = 1.2 hours per month
Estimated labour value: 1.2 × $48 = $57.60 per month
Net additional value after AI allowance: $57.60 – $20 = $37.60 per month
This modest estimate reflects the company’s small monthly volume. AI may be justified for response consistency, employee accessibility, or knowledge analysis even when direct financial value is limited. The company should disable or redesign the assistant if unsupported answers, correction effort, or usage costs exceed the expected benefit.
Testing Checklist
Use synthetic sample data and test accounts before processing real employee information.
| Test | Input or condition | Expected result | Evidence |
|---|---|---|---|
| Normal submission | Valid standard hybrid employee | Request, approval, folders, tasks, and notifications are created | RequestID and flow run |
| Missing required field | Blank required value | Form blocks submission or flow marks Needs Information | Validation result |
| Invalid field | Unapproved cost center or manager | No approval starts | Error log |
| Duplicate submission | Same candidate reference and date | No second request | Duplicate event log |
| Duplicate event | Replay the same flow input | Unique keys prevent duplicate records | Task and request counts |
| Failed authentication | Disable a test connection | Catch scope logs failure | Run history |
| Expired credential | Use an invalidated test connection | Support owner receives alert | Automation log |
| Failed connector request | Use an inaccessible test list | Safe retries occur and failure is logged | Retry history |
| Unavailable approver | Approver does not respond | Reminder and escalation rules run | Teams messages |
| Approval rejection | Manager selects Reject | Request becomes Rejected and no tasks generate | Approval ID |
| Needs information | Manager requests correction | Request pauses and can be resubmitted | Status history |
| Reassignment | Approval assigned to approved delegate | Current Approval ID controls outcome | Approval history |
| Overdue task | Open task past due | Task appears in overdue view | View and reminder count |
| Reminder | Task reaches reminder horizon | Owner receives one controlled reminder | Last reminder timestamp |
| Escalation | Task remains overdue | Department lead and People Operations are notified | Escalation level |
| Failed folder creation | Remove test write permission | Request becomes Automation Exception | SharePoint error |
| Failed file upload | Unsupported test upload | Evidence remains unverified | Task and error record |
| Failed notification | Use invalid test channel | Task remains valid and notification error is logged | Automation log |
| Unauthorized user | Open list and library as unauthorized tester | Access is denied | Permission test |
| Partial generation | Use one invalid owner configuration | Valid tasks remain and request shows Partial Failure | Template-level errors |
| Correct retry | Fix invalid configuration and retry | Only missing tasks are created | Unique task keys |
| Malformed AI output | Return non-JSON test output | Assistant escalates without displaying it as approved | Assistant log |
| Inaccurate AI output | Ask an ambiguous question | Reviewer flags output and knowledge owner corrects content or prompt | Review record |
| AI service failure | Disable test AI connection | Human contact route is displayed | Failure log |
| Prohibited AI question | Ask for payroll or legal decision | Assistant refuses and routes to authorized owner | Structured status |
| Successful completion | Complete all blocking work | Request becomes Ready for Start | Readiness fields |
| Correct reporting | Mix open, overdue, and completed records | Each record appears in the correct view | View comparison |
| Correct audit record | Complete approval and tasks | Responder, timestamps, evidence, and changes remain available | Version and approval history |
Ongoing Maintenance
The People Operations lead owns the business process. The automation owner maintains flows and connectors. A backup owner must be able to operate the system during absence or staff turnover.
| Frequency | Maintenance activity | Owner |
|---|---|---|
| Daily | Review critical failed runs, open automation errors, and requests starting soon but not ready. | Automation owner and People Operations |
| Weekly | Reconcile approved requests, generated tasks, folder links, and unresolved exceptions. | Automation owner |
| Monthly | Review reminder volume, exception rate, connector health, platform usage, and AI cost if enabled. | People Operations lead |
| Monthly | Sample AI answers, escalations, corrections, and unsupported-question themes. | Knowledge owner |
| Quarterly | Review permissions, flow owners, service accounts, Teams membership, and library sharing. | IT and People Operations |
| Quarterly | Test one normal case, one rejection, one duplicate, one failure, and one recovery. | Automation owner |
| Quarterly | Review task templates, owners, offsets, locations, equipment bundles, and policy changes. | Process owners |
| Annually | Review retention, privacy, audit, backup, and regulatory requirements. | Authorized governance owners |
| On personnel change | Remove former users, transfer ownership, replace connections, and update configuration. | IT administrator |
| On platform change | Retest connector actions, expressions, approvals, Teams posting, and permission behavior. | Automation owner |
Documentation should include the field dictionary, list relationships, flow inventory, connection owners, configuration keys, approval rules, template rules, security model, recovery procedures, test cases, and change history.
When to Move to Dedicated Software
This Microsoft 365 implementation can remain appropriate while the workflow is understandable, maintainable, secure, and proportionate to transaction volume. Replacing it should not be automatic.
The company should evaluate dedicated onboarding, human resources, identity-governance, or service-management software when several of these signals appear:
- Onboarding volume or concurrent starts create excessive flow runs and manual exceptions.
- The business operates many legal entities, countries, or locations with distinct workflows.
- Formal regulatory controls require stronger case-level permissions or certified audit functions.
- Payroll, identity, recruiting, learning, and asset systems require supported bidirectional integrations.
- Unique list or folder permissions become difficult to review.
- Template combinations become too complex for controlled list rules.
- Exception rates increase despite process improvements.
- Operational staff spend excessive time maintaining flows and mappings.
- Reporting requires historical models, advanced workforce analytics, or formal service-level measurement.
- Employees and managers need a secure self-service portal.
- Mobile, offline, multilingual, or external-user requirements become important.
- The organization requires vendor support commitments or formal recovery guarantees.
- Data volume or query behavior makes list performance difficult to manage.
- Security risk increases because more sensitive employee information is requested.
A dedicated platform should be assessed against the working process and data model established here. The current implementation can also remain as an integration or exception-management layer if it continues to serve a controlled purpose.
Implementation Checklist
- Confirm business requirements, scope, volume, owners, and readiness definition.
- Confirm Microsoft 365 licensing and connector availability.
- Select the production Form, SharePoint site, lists, libraries, Team, and channels.
- Create primary and backup automation owners.
- Define least-privilege access and prohibited data.
- Create development and production resources.
- Build the internal intake form and validation rules.
- Create request, task, equipment, template, configuration, and log lists.
- Enable version history, unique fields, and required indexes.
- Define task templates by role, work mode, employment type, and location.
- Configure owner and escalation mappings.
- Map Forms fields to request fields.
- Build duplicate prevention and readable RequestID creation.
- Build manager and conditional IT approvals.
- Build idempotent task and equipment generation.
- Configure reminders, escalations, and unavailable-approver handling.
- Create restricted document libraries and naming conventions.
- Build readiness rollups and operational views.
- Configure Teams receipts, task notices, reminders, and summaries.
- Add Try, Catch, and Finally scopes with appropriate retry behavior.
- Create the dead-letter automation log and manual-recovery process.
- Review security, sharing, retention, backup, and privacy controls.
- Test normal, duplicate, invalid, rejected, overdue, failed, and recovered cases.
- Complete user acceptance testing with all participating departments.
- Document deployment, rollback, support, and maintenance procedures.
- Validate implementation-cost and savings assumptions with internal figures.
- Add the AI onboarding assistant only after the core process is stable.
- Restrict AI to approved knowledge and human escalation.
- Assign a primary maintenance owner and backup owner.
- Define the conditions that will trigger evaluation of dedicated software.
Get a FREE
Proof of Concept
& Consultation
No Cost, No Commitment!


