v2.0

GoRules Version 2 is here - redesigned, now with managed cloud.GoRules Version 2 is here!

Watch the launch videoWatch

International Roaming Policy Manager

Automated telecom solution that applies custom roaming rates and service levels based on customer destination, plan type and usage patterns.

Solution

This international roaming manager automatically determines appropriate service levels and pricing when customers travel abroad. The system evaluates the destination country and region against established roaming agreements to apply the correct service tier, from premium to minimal coverage. Each tier defines specific data access levels (full, limited, restricted, or emergency-only) with corresponding rate structures for data, voice, and SMS usage.

The solution calculates estimated daily costs based on the customer's typical usage patterns and determines if data and voice roaming should be enabled based on the customer's plan permissions and destination policies. It tracks remaining data allowances by comparing quota limits against current usage, ensuring customers stay within their plan boundaries. This prevents bill shock while maintaining appropriate service levels that align with both carrier agreements and customer expectations.

How it works

The decision graph evaluates roaming eligibility and rates through these key processes:

  1. Regional Policy Lookup: Identifies the destination region from the customer travel data and determines the appropriate service tier, access level, and base rates for data, voice, and SMS.

  2. Service Tier Assignment: Applies predetermined service levels with EU regions receiving premium access, while areas with fewer agreements receive basic or minimal coverage.

  3. Rate Application: Sets specific pricing for each region, with rates increasing based on the carrier's roaming agreements (ranging from €1.0/MB in EU regions to €5.0/MB in regions with minimal agreements).

  4. Cost Projection: Calculates the customer's estimated daily costs based on their historical usage patterns and the destination's rate structure.

  5. Service Activation: Determines which services to enable based on customer permissions and remaining allowances, preventing unexpected charges.

Where teams use it

  • Mobile network operators managing international roaming
  • MVNOs implementing partner carrier agreements
  • Corporate telecom expense management
  • Travel plan optimization for frequent international travelers
  • Prepaid service providers with international offerings
  • IoT device deployments requiring cross-border connectivity

Inside the decision model

International Roaming Policy Manager ships as a JDM decision graph with 3 nodes, 1 decision table and 5 rules. Download it, load it into GoRules, and run it as-is on Zen Engine.

Decision graph3 nodes · read-only
input roamingRequesttable roamingPolicyLookupexpression calculateRoamingParameters
01

Roaming Request

input

Two request objects drive the decision: destination supplies the region that selects the roaming policy, and customer carries the profile permissions, quotas, and average usage plus the usage counters already consumed on this trip.

Sample requestJSON
{
  "destination": {
    "country": "France",
    "region": "EU",
    "arrivalDate": "2025-03-20",
    "departureDate": "2025-03-27"
  },
  "customer": {
    "id": "C123456789",
    "profile": {
      "planType": "International Plus",
      "isDataRoamingAllowed": true,
      "isVoiceRoamingAllowed": true,
      "dataRoamingQuota": 5000,
      "avgDailyDataUsage": 250,
      "avgDailyVoiceUsage": 15,
      "avgDailySmsUsage": 10
    },
    "usage": {
      "dataRoamingUsed": 1250,
      "voiceRoamingUsed": 45,
      "smsRoamingUsed": 22
    }
  }
}
02

Roaming Policy Lookup

table

Zone pricing is a single first-hit lookup on destination.region that emits the whole rate card at once. 'EU' gets the 'premium' tier with 'full' data access at 1.0 per MB, 0.15 per voice minute, and 0.05 per SMS; 'USA', 'Canada' and the 'Australia', 'New Zealand', 'Japan', 'South Korea' group are 'standard'/'limited' at 2.0 and 2.5 per MB; 'China', 'India', 'Brazil', 'Russia', 'Mexico' fall to 'basic'/'restricted' at 3.5, and any unlisted region hits the catch-all: 'minimal' tier, 'emergency' access only, 5.0 per MB.

Grouping countries into rate zones is exactly how roaming is wholesaled between carriers, since retail prices track the inter-operator tariffs negotiated per agreement, and EU destinations are cheapest here because intra-EU roaming is the most mature and regulated market. The emergency-only fallback for unknown regions is the standard defensive posture: where no agreement exists, wholesale costs are unpredictable, so everything except emergency service stays off.

Decision tablefirst hit policy
Regiondestination.regionServiceTierpolicy.serviceTierDataAccesspolicy.dataAccessDataRatePerMBpolicy.dataRateVoiceRatePerMinpolicy.voiceRateSMSRatePerMessagepolicy.smsRate
'EU''premium''full'1.00.150.05
'USA', 'Canada''standard''limited'2.00.250.10
'Australia', 'New Zealand', 'Japan', 'South Korea''standard''limited'2.50.300.15
'China', 'India', 'Brazil', 'Russia', 'Mexico''basic''restricted'3.50.400.25
-'minimal''emergency'5.00.500.30
03

Calculate Roaming Parameters

expression

Trip economics and switches are computed from the selected policy: totalEstimatedDailyCost multiplies avgDailyDataUsage, avgDailyVoiceUsage, and avgDailySmsUsage by the matching policy rates to give a bill-shock preview before travel. isDataRoamingEnabled requires both policy.serviceTier != 'minimal' and the customer's own isDataRoamingAllowed opt-in, voice only needs the customer permission, and remainingDataAllowance subtracts dataRoamingUsed from dataRoamingQuota so provisioning knows how much headroom is left.

Expressions4 fields
totalEstimatedDailyCostcustomer.profile.avgDailyDataUsage * policy.dataRate + customer.profile.avgDailyVoiceUsage * policy.voiceRate + customer.profile.avgDailySmsUsage * policy.smsRate
isDataRoamingEnabledpolicy.serviceTier != 'minimal' and customer.profile.isDataRoamingAllowed == true
isVoiceRoamingEnabledcustomer.profile.isVoiceRoamingAllowed == true
remainingDataAllowancecustomer.profile.dataRoamingQuota - customer.usage.dataRoamingUsed

Make this template
your own.

Load International Roaming Policy Manager into GoRules, adjust the rules to your policy, and ship it behind your own API.