EPMS Integrations and API Guide
Overview
This technical guide covers all integration options for the Employee Performance Management System (EPMS), including HRIS synchronization, Learning Management System connections, Single Sign-On configuration, and API development. Learn how to connect EPMS with your existing technology ecosystem for seamless data flow and enhanced functionality.
Who this is for: System Administrators, IT Integration Specialists, Developers, and Technical Project Managers implementing EPMS integrations
Prerequisites: Administrative access to EPMS, API authentication credentials, and technical knowledge of integration platforms
Integration Architecture Overview
EPMS Integration Ecosystem
Integration Methods
Real-Time Integrations:
- API Webhooks: Immediate data synchronization for critical updates
- Single Sign-On (SSO): Seamless user authentication and session management
- Real-Time Notifications: Instant communication through Slack, Teams, or email
Batch Integrations:
- Scheduled Data Sync: Daily, weekly, or monthly data synchronization
- File-Based Import/Export: CSV, JSON, or XML data exchange
- ETL Processes: Extract, Transform, Load operations for complex data mapping
HRIS Integration
Employee Data Synchronization
Core Employee Information
HRIS Integration Configuration:
{
"integration_type": "hris",
"sync_frequency": "daily",
"sync_time": "02:00 UTC",
"data_mapping": {
"employee_id": "hris.employee_number",
"first_name": "hris.first_name",
"last_name": "hris.last_name",
"email": "hris.work_email",
"department": "hris.department_code",
"job_title": "hris.position_title",
"manager_id": "hris.supervisor_id",
"hire_date": "hris.start_date",
"employment_status": "hris.status"
},
"webhook_url": "https://your-epms.workforce.mangoapps.com/api/v1/webhooks/hris",
"authentication": {
"type": "oauth2",
"client_id": "your_hris_client_id",
"client_secret": "your_hris_client_secret"
}
}
Organizational Structure Sync
Department and Hierarchy Management:
// Example HRIS Organizational Data Structure
{
"departments": [
{
"department_id": "ENG001",
"department_name": "Engineering",
"parent_department": null,
"department_head": "john.smith@company.com",
"cost_center": "CC-ENG-001"
},
{
"department_id": "ENG002",
"department_name": "Platform Engineering",
"parent_department": "ENG001",
"department_head": "sarah.jones@company.com",
"cost_center": "CC-ENG-002"
}
],
"reporting_relationships": [
{
"employee_id": "emp_12345",
"manager_id": "emp_67890",
"effective_date": "2024-01-01",
"relationship_type": "direct_report"
}
]
}
Common HRIS Integrations
Workday Integration
Workday Configuration Example:
<!-- Workday Web Service Configuration -->
<workday_integration>
<endpoint>https://services1.workday.com/ccx/service/tenant_name</endpoint>
<username>integration_user@tenant</username>
<password>secure_password</password>
<report_url>/customreports/report_name</report_url>
<sync_fields>
<field workday="Worker_ID" epms="employee_id"/>
<field workday="Legal_Name_First_Name" epms="first_name"/>
<field workday="Legal_Name_Last_Name" epms="last_name"/>
<field workday="Primary_Work_Email" epms="email"/>
<field workday="Organization" epms="department"/>
<field workday="Business_Title" epms="job_title"/>
<field workday="Manager_Worker_ID" epms="manager_id"/>
</sync_fields>
</workday_integration>
BambooHR Integration
BambooHR API Configuration:
# BambooHR Integration Example
import requests
class BambooHRIntegration:
def __init__(self, api_key, subdomain):
self.api_key = api_key
self.base_url = f"https://api.bamboohr.com/api/gateway.php/{subdomain}/v1"
self.headers = {"Accept": "application/json"}
def get_employee_data(self, employee_id=None):
endpoint = f"{self.base_url}/employees/directory"
auth = (self.api_key, "x")
response = requests.get(endpoint, headers=self.headers, auth=auth)
return response.json()
def sync_to_epms(self, epms_webhook_url):
employee_data = self.get_employee_data()
transformed_data = self.transform_bamboo_to_epms(employee_data)
# Send to EPMS webhook
requests.post(epms_webhook_url, json=transformed_data)
Learning Management System (LMS) Integration
Course Catalog Synchronization
Training and Development Integration
LMS Integration Framework:
{
"lms_integration": {
"provider": "cornerstone_ondemand",
"sync_type": "bidirectional",
"course_catalog_sync": {
"frequency": "weekly",
"include_categories": ["leadership", "technical", "compliance"],
"sync_enrollments": true,
"sync_completions": true,
"sync_scores": true
},
"skill_mapping": {
"enable_skill_validation": true,
"course_completion_credits_skills": true,
"certification_tracking": true
}
}
}
Skills Development Tracking
Course Completion to Skills Mapping:
// Example Skills-Course Mapping Configuration
{
"skills_course_mapping": [
{
"skill_id": "leadership_communication",
"course_completions": [
{
"course_id": "LDR-101",
"course_name": "Effective Communication for Leaders",
"skill_credit": 0.8,
"proficiency_increase": 1
},
{
"course_id": "LDR-201",
"course_name": "Advanced Leadership Communication",
"skill_credit": 1.2,
"proficiency_increase": 2
}
]
},
{
"skill_id": "project_management",
"certification_requirements": [
{
"certification": "PMP",
"skill_level": 4,
"auto_update": true
},
{
"certification": "Agile Certified Practitioner",
"skill_level": 3,
"auto_update": true
}
]
}
]
}
Popular LMS Integrations
Cornerstone OnDemand
Cornerstone API Integration:
class CornerstoneIntegration:
def __init__(self, client_id, client_secret, base_url):
self.client_id = client_id
self.client_secret = client_secret
self.base_url = base_url
self.access_token = self.get_access_token()
def get_course_completions(self, employee_id):
endpoint = f"{self.base_url}/services/api/x/transcript"
headers = {"Authorization": f"Bearer {self.access_token}"}
params = {"userId": employee_id}
response = requests.get(endpoint, headers=headers, params=params)
return response.json()
def sync_development_plans(self, epms_api_endpoint):
# Sync individual development plans from Cornerstone to EPMS
pass
Coursera for Business
Coursera Integration Example:
{
"coursera_integration": {
"enterprise_id": "your_enterprise_id",
"api_key": "your_coursera_api_key",
"course_sync": {
"include_specializations": true,
"track_certificates": true,
"map_to_skills": true
},
"learner_sync": {
"track_progress": true,
"sync_scores": true,
"completion_webhooks": true
}
}
}
Single Sign-On (SSO) Integration
Authentication Providers
SAML 2.0 Configuration
SAML SSO Setup:
<!-- SAML 2.0 Configuration for EPMS -->
<saml_configuration>
<entity_id>https://your-epms.workforce.mangoapps.com/saml/metadata</entity_id>
<sso_url>https://your-idp.com/sso/saml</sso_url>
<slo_url>https://your-idp.com/slo/saml</slo_url>
<certificate_file>path/to/idp-certificate.pem</certificate_file>
<attribute_mapping>
<attribute name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"
maps_to="email"/>
<attribute name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"
maps_to="first_name"/>
<attribute name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"
maps_to="last_name"/>
<attribute name="http://schemas.microsoft.com/ws/2008/06/identity/claims/groups"
maps_to="roles"/>
</attribute_mapping>
</saml_configuration>
OAuth 2.0 / OpenID Connect
OIDC Configuration Example:
{
"oidc_config": {
"issuer": "https://your-identity-provider.com",
"client_id": "epms_client_id",
"client_secret": "epms_client_secret",
"redirect_uri": "https://your-epms.workforce.mangoapps.com/auth/callback",
"scopes": ["openid", "profile", "email", "groups"],
"claim_mapping": {
"email": "email",
"given_name": "first_name",
"family_name": "last_name",
"groups": "roles"
}
}
}
User Provisioning and De-provisioning
Automated User Management
SCIM 2.0 Integration:
{
"scim_endpoint": "https://your-epms.workforce.mangoapps.com/scim/v2",
"authentication": {
"type": "bearer_token",
"token": "your_scim_api_token"
},
"user_provisioning": {
"auto_create_users": true,
"auto_update_users": true,
"auto_deactivate_users": true,
"role_mapping": {
"EPMS_Employee": ["employee"],
"EPMS_Manager": ["employee", "manager"],
"EPMS_HR_Admin": ["employee", "manager", "hr_admin"],
"EPMS_System_Admin": ["employee", "manager", "hr_admin", "system_admin"]
}
}
}
EPMS REST API
API Authentication
API Key Authentication
API Key Setup:
# Generate API Key
curl -X POST https://your-epms.workforce.mangoapps.com/api/v1/auth/api-keys \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Integration API Key",
"permissions": ["read:employees", "write:performance", "read:analytics"],
"expires_at": "2025-12-31T23:59:59Z"
}'
# Use API Key
curl -X GET https://your-epms.workforce.mangoapps.com/api/v1/employees \
-H "X-API-Key: YOUR_API_KEY"
OAuth 2.0 Client Credentials
OAuth Client Setup:
import requests
class EPMSAPIClient:
def __init__(self, client_id, client_secret, base_url):
self.client_id = client_id
self.client_secret = client_secret
self.base_url = base_url
self.access_token = None
def get_access_token(self):
auth_url = f"{self.base_url}/oauth/token"
data = {
"grant_type": "client_credentials",
"client_id": self.client_id,
"client_secret": self.client_secret,
"scope": "read:performance write:goals"
}
response = requests.post(auth_url, data=data)
token_data = response.json()
self.access_token = token_data["access_token"]
return self.access_token
Core API Endpoints
Employee Performance Data
Performance Reviews API:
# Get Employee Performance Reviews
GET /api/v1/employees/{employee_id}/performance-reviews
Authorization: Bearer {access_token}
Response:
{
"employee_id": "emp_12345",
"reviews": [
{
"review_id": "rev_67890",
"review_period": "2024-Q1",
"status": "completed",
"self_rating": 4.2,
"manager_rating": 4.0,
"goal_completion": 0.85,
"skills_assessment": {
"technical_skills": 4.1,
"leadership": 3.8,
"communication": 4.3
},
"development_priorities": [
"Public speaking",
"Strategic thinking",
"Team leadership"
]
}
]
}
Goals Management API
Goals CRUD Operations:
# Create Goal
POST /api/v1/employees/{employee_id}/goals
Content-Type: application/json
Authorization: Bearer {access_token}
{
"title": "Improve Customer Satisfaction Scores",
"description": "Increase team customer satisfaction from 4.2 to 4.8",
"category": "performance",
"priority": "high",
"target_date": "2024-12-31",
"success_criteria": [
{
"metric": "customer_satisfaction_score",
"target_value": 4.8,
"current_value": 4.2
}
]
}
# Update Goal Progress
PATCH /api/v1/goals/{goal_id}/progress
{
"progress_percentage": 75,
"notes": "Implemented new customer feedback system",
"obstacles": [],
"support_needed": false
}
Skills and Development API
Skills Assessment Endpoints:
# Get Employee Skills Profile
GET /api/v1/employees/{employee_id}/skills
Response:
{
"employee_id": "emp_12345",
"skills_assessment": {
"core_competencies": [
{
"skill_id": "communication",
"skill_name": "Communication",
"proficiency_level": 4,
"self_rating": 4,
"manager_rating": 4,
"last_assessed": "2024-01-15"
}
],
"technical_skills": [...],
"leadership_skills": [...]
},
"development_plan": {
"plan_id": "dev_plan_789",
"goals": [...],
"learning_activities": [...]
}
}
Webhook Integration
Real-Time Event Notifications
Webhook Configuration:
{
"webhook_config": {
"endpoint": "https://your-system.com/epms-webhooks",
"secret": "webhook_signing_secret",
"events": [
"performance_review.completed",
"goal.created",
"goal.updated",
"skill_assessment.completed",
"development_plan.approved"
],
"retry_policy": {
"max_retries": 3,
"retry_delay": 300,
"exponential_backoff": true
}
}
}
Webhook Event Examples:
// Performance Review Completed Event
{
"event_type": "performance_review.completed",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"review_id": "rev_67890",
"employee_id": "emp_12345",
"manager_id": "emp_54321",
"review_period": "2024-Q1",
"completion_date": "2024-01-15T10:30:00Z",
"overall_rating": 4.1,
"goal_completion": 0.87
}
}
// Goal Created Event
{
"event_type": "goal.created",
"timestamp": "2024-01-16T14:20:00Z",
"data": {
"goal_id": "goal_98765",
"employee_id": "emp_12345",
"title": "Complete AWS Certification",
"category": "development",
"target_date": "2024-06-30",
"status": "pending_approval"
}
}
Business Intelligence and Analytics Integration
Data Export and Reporting
Analytics Data Export
Performance Analytics Export:
class EPMSAnalyticsExport:
def __init__(self, api_client):
self.api_client = api_client
def export_performance_data(self, date_range, departments=None):
endpoint = "/api/v1/analytics/performance"
params = {
"start_date": date_range["start"],
"end_date": date_range["end"],
"format": "json",
"include_details": True
}
if departments:
params["departments"] = ",".join(departments)
return self.api_client.get(endpoint, params=params)
def export_skills_matrix(self, organization_level="all"):
endpoint = "/api/v1/analytics/skills-matrix"
params = {"level": organization_level, "format": "csv"}
return self.api_client.get(endpoint, params=params)
Power BI Integration
Power BI Connector Configuration:
{
"powerbi_integration": {
"data_source": {
"type": "rest_api",
"base_url": "https://your-epms.workforce.mangoapps.com/api/v1",
"authentication": {
"type": "oauth2",
"client_id": "powerbi_client_id",
"client_secret": "powerbi_client_secret"
}
},
"datasets": [
{
"name": "Employee Performance",
"endpoint": "/analytics/performance",
"refresh_schedule": "daily"
},
{
"name": "Skills Assessment",
"endpoint": "/analytics/skills",
"refresh_schedule": "weekly"
},
{
"name": "Goal Achievement",
"endpoint": "/analytics/goals",
"refresh_schedule": "daily"
}
]
}
}
Communication Platform Integration
Slack Integration
Notification and Bot Configuration
Slack App Configuration:
{
"slack_integration": {
"bot_token": "xoxb-your-slack-bot-token",
"webhook_url": "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK",
"notifications": {
"performance_review_reminders": {
"channel": "#hr-notifications",
"enabled": true,
"template": "β° Performance review reminder: {employee_name}'s review is due in {days_remaining} days"
},
"goal_completions": {
"channel": "#achievements",
"enabled": true,
"template": "π {employee_name} completed their goal: {goal_title}"
},
"feedback_requests": {
"direct_message": true,
"template": "Hi {recipient_name}! You've received a feedback request from {sender_name} in EPMS"
}
}
}
}
Microsoft Teams Integration
Teams Bot Setup:
// Microsoft Teams Bot for EPMS
const { TeamsActivityHandler, MessageFactory } = require('botbuilder');
class EPMSTeamsBot extends TeamsActivityHandler {
constructor() {
super();
this.onMessage(async (context, next) => {
const userText = context.activity.text;
if (userText.includes('my goals')) {
const goals = await this.getEmployeeGoals(context.activity.from.id);
const goalsCard = this.createGoalsCard(goals);
await context.sendActivity(MessageFactory.attachment(goalsCard));
}
await next();
});
}
async getEmployeeGoals(teamsUserId) {
// Integrate with EPMS API to fetch goals
const epmsUserId = await this.mapTeamsUserToEPMS(teamsUserId);
return await epmsAPI.getEmployeeGoals(epmsUserId);
}
}
Security and Compliance
Data Security Best Practices
API Security
Security Configuration:
{
"security_config": {
"api_rate_limiting": {
"requests_per_minute": 100,
"burst_limit": 200,
"throttle_message": "Rate limit exceeded"
},
"ip_whitelisting": {
"enabled": true,
"allowed_ips": [
"192.168.1.0/24",
"10.0.0.0/8"
]
},
"data_encryption": {
"in_transit": "TLS 1.3",
"at_rest": "AES-256",
"key_rotation": "quarterly"
},
"audit_logging": {
"log_all_api_calls": true,
"include_request_body": false,
"retention_period": "7_years"
}
}
}
Compliance Considerations
GDPR/Privacy Compliance:
- Data Minimization: Only sync necessary employee data
- Consent Management: Track and manage data processing consent
- Right to Erasure: Implement data deletion workflows
- Data Portability: Provide data export capabilities
- Audit Trails: Maintain detailed access and modification logs
Summary
EPMS integrations enable seamless connectivity with your organizationβs technology ecosystem, providing:
- HRIS Synchronization for accurate employee data and organizational structure
- LMS Integration for comprehensive skills development tracking
- SSO Authentication for secure, seamless user access
- API Connectivity for custom integrations and data exchange
- Analytics Integration for comprehensive business intelligence
- Communication Platform integration for enhanced user engagement
Successful integration implementation requires careful planning, security consideration, and ongoing maintenance to ensure optimal performance and data integrity across all connected systems.
For setup guidance and specific configuration requirements, see our EPMS Setup and Configuration Guide and API Authentication documentation.