RahalCorporate
Booking RequestsConcepts

Feature Integration

How booking requests integrate with policies, budgets, and delegation

Feature Integration

Booking requests are deeply integrated with other Rahal features. Understanding these connections is essential for effective use of the platform.

Policy Integration

Evaluation at Submission

When a booking request is created:

  1. Policy Resolution — System finds the user's effective policy

    • User-specific policy (highest priority)
    • Role-based policy
    • Company default policy
  2. Rule Matching — Each item is evaluated against policy rules

    • Flight rules: routes, cabin class, budget tiers
    • Hotel rules: locations, star ratings, price limits
  3. Action Determination — Policy action is determined

    • ALLOW → Direct booking (no request)
    • WARN_AND_ALLOW → Direct booking with warning
    • REQUIRE_APPROVAL → Request created
    • BLOCK → Booking prevented
  4. Violation Logging — All violations are recorded

    • Stored in policy violation logs
    • Associated with the booking request
    • Visible to administrators

Policy Context in Requests

The request stores:

FieldDescription
policyIdID of the evaluated policy
ViolationsDetails of each rule violation
ActionThe policy action that was applied

This context helps admins understand why the request was created.

Example Flow

When a user selects a Baghdad → London flight in Business Class:

  1. The system matches against the "International flights" policy rule
  2. The rule only allows Economy class for this route
  3. A cabin class violation is detected
  4. Since the policy action is Require Approval, a booking request is created
  5. The violation is logged with the message "Business class not allowed"

Budget Integration

Budget Reservation Lifecycle

Budgets interact with booking requests through a reservation system:

Reservation Timing

When budget is reserved depends on company settings:

TimingWhen ReservedUse Case
ON_REQUESTRequest submissionStrict budget control
ON_APPROVALRequest completionFlexible for pending requests
ON_CONFIRMATIONBooking confirmationLoosest control

Budget Status Capture

At request creation, the system captures:

DataDescription
Budget IDWhich budget was evaluated
Available AmountHow much was available
Requested AmountCost of the booking
Exceeded AmountHow much over budget (if any)
CurrencyBudget currency (may differ from booking)
Enforcement ModeHow violations are handled

Status Transitions and Budget

Request TransitionBudget Action
Created (PENDING)Reserve amount (if ON_REQUEST)
PENDING → COMPLETEDConfirm reservation (pending → spent)
PENDING → CANCELLEDRelease reservation (pending → available)

If a request stays PENDING for a long time with ON_REQUEST timing, the reserved budget is unavailable for other bookings. Review pending requests regularly.

Delegation Integration

Creating Requests for Others

Users with delegation access can create booking requests on behalf of other users. When User B (delegate) creates a request for User A's (delegator) travelers:

AspectValueExplanation
Request attributed toUser AThe booking is for User A
Created byUser BTracks who submitted the request
Policy evaluated forUser AUser A's policy rules apply
Budget checked forUser AConsumes User A's budget

Required Scope

To create booking requests for another user, the delegate needs:

ScopeDescription
CREATE_BOOKINGSRequired for submitting requests

Visible Information

DataWho Can See
requestedByWho the booking is for
createdByWho actually created it (if different)

This distinction is important for:

  • Audit trails
  • Understanding request origin
  • Permission checking for cancellation

Cancellation Rights

A request can be cancelled by:

  • The requestedBy user (whose travel it is)
  • The createdBy user (who submitted it)
  • Any admin with appropriate permissions

Traveler Integration

Traveler Selection

When creating a request:

  1. User selects travelers from their available list
  2. This includes their own travelers + delegated travelers
  3. Each traveler is assigned a type code (ADT/CHD/INF)

Stored Traveler Data

Requests store:

FieldDescription
Traveler IDReference to traveler profile
Type CodeADT, CHD, or INF
Profile DataName, contact info (at submission time)
Passport InfoPrimary passport details

Passport Requirements

For international travel, passport information is critical:

  • Primary passport is automatically selected
  • Passport must be valid for travel dates
  • Expiry warnings are shown if applicable

Company Integration

Company Context

Every request is associated with a company:

FieldSource
companyIdFrom user's active company membership
Company NameDisplayed for admin context
Company SettingsDetermines booking mode

Data Flow Summary

Each booking request captures context from multiple sources:

SourceData Captured
PolicyPolicy ID, violations, action taken, matched rules
BudgetBudget ID, reserved amount, available balance, currency
TravelersTraveler profiles, passport details, type codes, count
CompanyCompany ID, booking mode settings

This context enables administrators to make informed decisions when processing requests.

On this page