Booking Requests
Submit and process travel booking requests requiring approval
Booking Requests
Booking requests are the core workflow mechanism for travel approvals in Rahal. When a booking cannot be completed directly—due to policy violations, budget constraints, or company booking mode settings—a booking request is created for admin review and processing.
What is a Booking Request?
A booking request is a formal submission containing:
- Travel Items — Flights and/or hotels the user wants to book
- Travelers — The people who will be traveling
- Pricing — Total cost with currency
- Context — Policy violations, budget status, and user notes
- Metadata — Requester info, company, and timestamps
Booking requests act as a queue for travel coordinators to review, modify if needed, and either approve (complete) or reject (cancel).
Request Lifecycle
Requests follow a simple three-state lifecycle:
| Status | Description | Who Can Trigger |
|---|---|---|
| PENDING | Awaiting review and processing | Created automatically on submission |
| COMPLETED | Approved and booking finalized | Admin only |
| CANCELLED | Rejected or withdrawn | Admin or requesting user |
Once a request is COMPLETED or CANCELLED, it cannot be changed. These are terminal states.
When Are Requests Created?
Booking requests are triggered in three scenarios:
1. Policy Requires Approval
When a user selects a flight or hotel that violates company policy, and the policy action is set to Require Approval, the booking is routed to a request.
User selects Business Class flight
→ Policy allows only Economy
→ Policy action: REQUIRE_APPROVAL
→ Booking request created2. Budget Exceeded
When a booking would exceed the user's available budget and the budget enforcement mode is Require Approval, a request is created.
User's budget: 5,000 IQD remaining
→ Booking cost: 7,500 IQD
→ Enforcement: REQUIRE_APPROVAL
→ Booking request created3. Company Booking Mode
Companies can configure their booking mode to always require approval:
| Booking Mode | Direct Booking | Request Required |
|---|---|---|
| Direct Booking | ✅ Yes | Only when policy/budget requires |
| Request Only | ❌ No | ✅ Always |
| Hybrid | ✅ For in-policy | ✅ For out-of-policy |
Key Features
For Users
- Submit requests for flights and hotels that require approval
- Track status of pending requests
- Cancel requests that are no longer needed
- View history of all past requests
For Administrators
- Review requests with full flight/hotel/traveler details
- Modify requests — add, edit, or remove items before approval
- Process requests — approve (complete) or reject (cancel)
- Filter and search across all company requests
Documentation
Concepts
Understand the request lifecycle, triggers, and integrations
Admin Guide
Processing, modifying, and managing booking requests
User Guide
Submitting, tracking, and cancelling your requests
Reference
Status definitions, field reference, and API details
Troubleshooting
Common issues and how to resolve them
Integration with Other Features
Booking requests don't exist in isolation—they're deeply integrated with other Rahal features:
| Feature | Integration |
|---|---|
| Policies | Policy violations trigger REQUIRE_APPROVAL requests |
| Budgets | Budget reservations are created/released with requests |
| Travelers | Requests include traveler profiles with passport info |
| Delegation | Users can submit requests on behalf of delegated travelers |
Implementation Status
All booking request features are fully implemented:
| Capability | Description |
|---|---|
| Policy-aware submission | Automatic routing to "Submit Request" vs "Confirm Booking" based on policy evaluation |
| User request viewing | View, track, and cancel own requests |
| Admin request management | View, filter, modify, and process all company requests |
| Budget integration | Automatic reservation on create, confirm/release on status change |
| Delegation support | Submit requests on behalf of delegated travelers |