The Leave Request Management System is a Power Platform solution developed using Power Apps, Dataverse, Power Automate, and Power Fx. The application streamlines employee leave requests, manager approvals, leave balance management, and workflow automation through an integrated low-code platform.
The system provides employees with a self-service leave request portal while enabling managers to review, approve, and reject requests through a dedicated approval interface. Business rules automate annual leave deductions and maintain accurate leave balances.
Many organisations rely on spreadsheets, emails, or paper-based processes to manage employee leave requests. These methods often lead to:
- Manual administrative effort
- Delayed approvals
- Poor visibility of leave balances
- Inconsistent data management
- Lack of auditability
This solution centralises leave management into a single platform while automating key business processes.
Canvas application containing:
- Employee Leave Request Screen
- Manager Approval Screen
- Leave Request Form
- Approval and Rejection Actions
- Leave Balance Forecasting
| Column |
|---|
| Employee ID |
| Employee Name |
| Leave Balance |
| Column |
|---|
| Request Name |
| Employee |
| Leave Type |
| Start Date |
| End Date |
| Number of Days |
| Reason |
| Status |
| Approved |
| Rejected |
| Submitted Date |
| Approved Date |
| Rejected Date |
Employees (1)
│
└───< Leave Requests (Many)
This relationship allows leave requests to retrieve employee information directly through Dataverse lookup columns.
- Submit leave requests
- Select leave type
- Enter leave dates
- Provide leave reasons
- Automatically calculate leave duration
- Track request status
- View pending leave requests
- Approve requests
- Reject requests
- Review employee leave balances
- Forecast leave balance after approval
Approved annual leave requests automatically deduct leave days from the employee's leave balance.
Example:
Current Balance = 25
Requested Days = 5
New Balance = 20
The following leave types do not impact annual leave balances:
- Sick Leave
- Emergency Leave
- Study Leave
- Capture employee leave requests
- Validate required information
- Submit records to Dataverse
- Edit Forms
- Date Pickers
- Dropdown Controls
- Labels
- Buttons
- Review submitted requests
- Process approvals and rejections
- Display employee balances
- Galleries
- Labels
- Approval Buttons
- Rejection Buttons
SubmitForm(frmLeaveRequest)
- Validates user input
- Creates a Dataverse record
- Submits leave request data
If(
Text(ThisItem.'Leave Type') = "Annual Leave",
Patch(
Employees,
ThisItem.Employee,
{
'Leave Balance':
ThisItem.Employee.'Leave Balance' - ThisItem.'Number of Days'
}
)
);
Patch(
'Leave Requests',
ThisItem,
{
Approved: true,
Rejected: false
}
);
Refresh(Employees);
Refresh('Leave Requests');
Notify(
"Request approved and leave balance updated",
NotificationType.Success
)
- Deducts annual leave balance
- Updates approval status
- Refreshes Dataverse records
- Displays confirmation notification
Annual Leave = Deduct Leave Balance
Other Leave Types = No Deduction
Patch(
'Leave Requests',
ThisItem,
{
Approved: false,
Rejected: true
}
);
Refresh('Leave Requests');
Notify(
"Request rejected",
NotificationType.Warning
)
- Updates rejection status
- Refreshes request records
- Displays warning notification
Filter(
'Leave Requests',
Approved = false &&
Rejected = false
)
- Displays only pending leave requests
- Excludes completed approvals and rejections
ThisItem.Employee.'Employee Name'
- Retrieves employee information through Dataverse lookup relationships
ThisItem.Employee.'Leave Balance'
- Displays employee leave entitlement
If(
Text(ThisItem.'Leave Type') = "Annual Leave",
ThisItem.Employee.'Leave Balance' - ThisItem.'Number of Days',
ThisItem.Employee.'Leave Balance'
)
- Forecasts employee balance after approval
- Applies only to annual leave requests
ThisItem.'Status (crf83_status)'
- Displays Dataverse Choice field value
- Tracks workflow progression
Notify(
"Request approved and leave balance updated",
NotificationType.Success
)
Notify(
"Request rejected",
NotificationType.Warning
)
Notify(
"Button clicked",
NotificationType.Success
)
Used during application testing and troubleshooting.
When a row is added
Status = Submitted
- Automatically updates new requests to Submitted status
When a row is modified
Approved = Yes
Approved Date = utcNow()
- Records approval timestamps
- Creates audit trail
When a row is modified
Rejected = Yes
Rejected Date = utcNow()
- Records rejection timestamps
- Maintains audit history
The application was tested using multiple leave request scenarios including:
- Annual Leave
- Sick Leave
- Emergency Leave
- Study Leave
Testing covered:
- Leave submission
- Manager approvals
- Manager rejections
- Leave balance deductions
- Dataverse relationship retrieval
- Workflow automation
- Audit timestamp generation
| Employee | Leave Type | Days |
|---|---|---|
| Jimmy Test | Annual Leave | 5 |
Balance Before = 25
Balance After = 20
| Employee | Leave Type |
|---|---|
| Jen Test | Emergency Leave |
Approved = No
Rejected = Yes
- Canvas Apps
- Forms
- Galleries
- Navigation
- User Interface Design
- Power Fx
- Table Design
- One-to-Many Relationships
- Lookups
- Choice Fields
- Data Modelling
- Automated Cloud Flows
- Dataverse Triggers
- Conditional Logic
- Record Updates
- Workflow Automation
- Requirements Gathering
- Process Design
- Workflow Modelling
- Business Rules Implementation
- Microsoft Power Apps
- Microsoft Dataverse
- Microsoft Power Automate
- Power Fx
- Employee Leave History Screen
- Power BI Dashboard Integration
- Automated Email Notifications
- Department-Level Approvals
- Leave Utilisation Reporting
- Mobile Optimisation
- Approval Comments and Notes
- Advanced Leave Analytics
Successfully developed an end-to-end Leave Request Management System using the Microsoft Power Platform. The solution demonstrates low-code application development, workflow automation, business rule implementation, Dataverse data modelling, and Power Fx programming while providing a scalable foundation for future enterprise enhancements.