Channel Manager - PMS - Service Integration
Brief Summary
This documentation explains the complete integration flow between Channel Manager (CM), Property Management System (PMS), and Service as middleware. This integration enables real-time synchronization of property data, room types, rate plans, inventory, and bookings between hotel internal systems and various Online Travel Agents (OTAs).
Integration Objectives:
- Automatic synchronization of property, room, rate, and inventory data
- Centralized booking management from multiple OTAs
- Real-time availability and pricing updates
- Streamlined operation workflow between CM and PMS
Integration Flow Diagrams
1. High-Level Flowchart
2. Swimlane Diagram with Actors
3. Standard Integration Flow
Detailed Integration Steps
1. Channel Manager (CM) - Setup Property & Connectivity
Step A: Setup PMS Connectivity
- Login to Channel Manager → Menu PMS Connectivity → Create New Connection
- Fill Mandatory Fields:
Hotel Code: Select property to be integrated (e.g.: "Hotel ABC - PMS Cakra") (will be used by Service)username: Username for CM access (will be used by Service)password: Password for CM access (will be used by Service)
Example Data:
hotel_code : CM_HTL_001
hotel_name: Hotel Grand Plaza
username: hotel_grand_api
password: P@ssw0rd123!
2. PMS System - Channel Manager Configuration
Step A: CM Connection Settings
- Login PMS → Settings → Channel Manager
- Fill Credentials from CM:
- Username:
hotel_grand_api(from CM → PMS Connectivity) - Password:
P@ssw0rd123!(from CM → PMS Connectivity) - Hotel ID:
CM_HTL_001(from CM → PMS Connectivity) - WSDL/Endpoint:
[URL from CM]
- Username:
Step B: Room & Rate Synchronization
- Menu Room & Rate Sync → Setup Mapping
- For each Room Rate, fill:
- Inv Code: PMS internal inventory code (e.g.:
STD,DLX,STE) if using bed type Inv Code becomes (STD#DBL,DLX#SGL,STE#TWN) - Room Type Code: ⚠️ MUST BE UNIQUE - only 1 code per mapping
- Dynamic Rate: Select rate option to be synchronized
Base Occ: Rate based on occupancyBase Session: Rate based on session
- Start Date: Rate activation start date (format: YYYY-MM-DD)
- End Date: Rate deactivation end date (format: YYYY-MM-DD)
- Online: Checkbox type, don't forget to check
- Inv Code: PMS internal inventory code (e.g.:
- Room Type:
- nothing needs to be added here, room type will follow PMS data
Example Mapping:
Room Type Name: Standard Room
inv_code: STD
room_type_code: STD001 // ⚠️ Must be unique, no duplication!
dynamic_rate: Base Sessions
start_date: 2024-01-01
end_date: 2024-12-31
⚠️ Mandatory Validation:
room_type_codemust be SINGULAR per mapping (no multiple allowed)start_date<=end_date- Timezone must be consistent with CM
- Make sure all room types to be sold online are mapped // ⚠️this is done in channel manager
3. Service Layer - Developer Task
Langkah Developer: Register Property ke Service
- Access the Service Admin Panel or API endpoint
- Register a New Property:
POST http://exp_lane/properties
{
"hotel_id": "CM_HTL_001",
"hotel_code": "[CODE_FROM_PMS]", // TODO: Get from PMS
"unit_code": "[CODE_FROM_PMS]", // TODO: Get from PMS → can be an empty string
"hotel_name": "[ANY]", // TODO: Can get from PMS or CM
"username": "hotel_grand_api", // From CM → PMS Connectivity
"password": "P@ssw0rd123!", // From CM → PMS Connectivity
"WSDL": "http://exp_lane/cakra",
"vendor": "CKHU", // From PMS
"type_code": "CM", // Default CM
"is_active": 1, // Default 1
"interval": 20, // How many seconds the request runs, set to 20 seconds for best interval
}
Required Data Mapping:
-
From CM PMS Connectivity:
username→ Serviceusernamepassword→ Servicepasswordhotel_code→ Servicehotel_idCM Endpoint→ ServiceWSDL
-
From PMS:
- Hotel Code → Service
hotel_code - Unit Code → Service
unit_code→ can be an empty string
- Hotel Code → Service
Sync Avail & Rate
Once registered in CM, Service, and PMS, sync availability and rate can be performed as follows:
- Sync Availability
- Login to PMS → Room Type Availability
- Click the
Sync Availabilitybutton - Select the Room Type to be synced
- Select Start Date and End Date // Used to send Availability for the desired date range (e.g.:
11-10-2025to11-10-2026), so the availability sent to CM will be from11-10-2025to11-10-2026
Tugas Teknis Developer:
Developer Technical Tasks:
- Credential Encryption: Store username/password securely
- Retry Logic: Implement retry for failed API calls
- Logging: Log all synchronization activities
- Monitoring: Set up alerts for connection failures
Checklist Validasi Pre Go-Live
Pre Go-Live Validation Checklist
☐ Channel Manager Validation
- Property data is complete and valid
- PMS Connectivity is properly saved
- Username/password can be accessed by Service
- Hotel ID is unique and consistent
- Room Rate and Room Type are mapped
☐ PMS System Validation
- CM connection successfully established
- Room type mapping is complete (all room types being sold)
- Rate mapping matches pricing strategy
- Date range is valid (start_date
<=end_date) - Dynamic rate option is selected
☐ Service Integration Validation
- Property is registered in Service database
- CM credentials are stored
- CM endpoint is accessible
- Retry logic and error handling are active
- Monitoring and logging are running
- Test sync CM → Service → PMS is successful
☐ End-to-End Testing
- Test create/update inventory from PMS → CM
- Test booking notification CM → PMS
- Test rate update PMS → OTA (via CM)
- Test real-time availability update
- Verify timezone consistency
- Load testing for high-volume sync
Communication Template for Defvelopers
Email Template: Request Property Registration
Subject: [URGENT] New Property Registration to Service - Hotel [NAME]
Hi Developer Team,
Please help to register a new property to the Service with the following data:
**Property Information:**
- Hotel Name: [HOTEL_NAME]
- Hotel Code (PMS): [HOTEL_CODE] // TODO: Coordinate with PMS team
**CM PMS Connectivity Data:**
- Username: [USERNAME_FROM_CM]
- Password: [PASSWORD_FROM_CM] // Will be shared via secure channel
- Hotel ID: [HOTEL_CODE]
- WSDL/Endpoint: [ENDPOINT_URL]
- Vendor: [VENDOR_CM] // Cakrahub
**Request:**
1. Add property to Service database
2. Setup credential mapping (CM ↔ PMS)
3. Enable sync service
4. Perform end-to-end testing
**Timeline:** Go-live target: [TARGET_DATE]
Please confirm receipt and estimated completion time.
Thanks,
[EXP_LANE CAKRA]
Technical Notes & Best Practices
Security
- API Access: Use HTTPS for all communication between services
- API Key: Store API keys securely to make future management easier
- Audit Trail: Log all data changes for auditing
Error Handling
- Check Logs: Every communication between CM and PMS, the data flow log is recorded in the service. You can track data here to find where the error occurred
💡 Tips: Always perform testing in the staging environment before production deployment. Coordinate with all stakeholders (Hotel Ops, PMS Team, Developer) to ensure smooth integration.