Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

To download above documents:

  • Click on desired document to open it. Then, click on the cloud symbol in the top right corner of your screen to download, save, or print.

The train travel service is integrated with the online travel booking process. It lets you set up spending policies, and guides users to appropriate train options. Tickets can be picked up at a station kiosk or emailed. 

Benefits and Need to Know

Benefits and Need to Know

Benefits

  • Rail passive segments can be passed through to the global distribution system (GDS)

    • Note: Amadeus functionality does not currently support GDS write back of rail segments.  If rail is enabled on an Amadeus site, the reservation is only viewable online; no GDS PNR is created.

  • Add configuration to your Template site, as the configuration will clone over to all new sites

    • You can disable rail by unchecking rail within each Travel Service Rule

Need to Know

  • Supported GDS

    • Sabre

    • Galileo (Apollo)

    • Worldspan

    • Amadeus

      • No passive segment PNR write back

  • Travelers can store their Via Rail Membership program numbers in their profiles.

  • Companies can manage train costs with policies and take advantage of negotiated rates.

  • Company Site card being used?: Yes, You will need to open a Deem Support case, Deem will need to contact Silverrail on your clients behalf to set up Customer Identifiers.

  • Individual credit card being used?: Yes,You will not need to open a Deem Support case, you can use your TMC Customer Identification information.

    • Note: If your client has Amtrak enabled you can use the same TMC Customer Identification information for Via Rail.

Steps to Configure

Agency Settings

  • Clones over from Template site

    • Note: Best practice to add your TMC Customer Identification information within your template site. This way when you clone your site, minimal programming is needed.

      • Only need to change if the customer will be using a site card for billing rail. In this instance you will need to open a case with Deem to have them notify Silver Rail. Deem will provide you the customer identification information for your client.  

        • See attached template, you can fill our and attach to the case you need to open

  • See below instructions on how to configure Agency Settings

  • Keep in mind you can have Agency Settings programmed, but until you check the rail box under travel service rules, no action will be taken. 

PNR Mapping

  • Clones over from Template site

  • We have provided scripts you can add to template and existing sites, if you would like to write the fields to the PNR.  Please see below instructions on how to configure PNR Mapping

    • Note: If this is the first time programming Rail, please open a Deem Support Case.  Deem will assist you with programming your site. If there are other scripts you may need please add them to the case.

  • Keep in mind you can have PNR mapping configured, but until you check the rail box under travel service rules, no action will be taken. 

Private Rates

  • Clones over from Template site

  • Please see below steps with regards to configuring private rates

  • Keep in mind you can have private rates configured, but until you check the rail box under travel service rules, no action will be taken. 

Travel Policy

Display Policy

Travel Service Rules

  • Clones over from Template site

  • Check box located under service Rules to fully enable rail and to show as a booking option on the home page with air, car and hotel.

    • Note: You can have all of the above steps completed, but if you do not go to service rules to enable rail the client will not have the ability to book.  

  • Click link for further information around Travel Service Rules

Agency Settings Configuration

Accessing Agency Settings

Agency Setting configurations will clone over to your template site.

  • Click on Services tab

  • Click on Travel Agency

  • Click on Agency Settings

  • Click on current Agency Setting

  • Sales Location: If a Canadian airport code is entered, then it is Canada’s Via Rail train service that will be offered

Note: Please open Deem Support Case if this is the first time setting up Rail Services. As Deem will need to obtain the following information from SilverRail.

  • You can have one SilverRail contract for your entire Agency to apply to your client sites if the client is not booking rail with a Corporate Site Card.

  • If Client will use a Corporate Site card for rail services you will need to open a Deem Support Case.  Deem will need to notify Silverrail and they will provide Identifiers listed below. 

  • Channel: 

    • Enter the Deem-supplied Channel code (all capital letters). 

      • Contact your Deem representative if you did not receive this code

  • Agency Identifier:

    • Enter the Deem-supplied Agency Identifier (all capital letters). 

      • Contact your Deem representative if you did not receive this identifier.

  • Customer Identifier:

    • Enter the Deem-supplied Customer Identifier (all capital letters)

      • Contact your Deem representative if you did not receive this identifier, which defines a specific customer and is created during implementation. The field is used for reporting only.

  • Agency Identifier:

    • Enter the Deem-supplied Customer Identifier (all capital letters)

      • Contact your Deem representative if you did not receive this identifier, which defines a specific customer and is created during implementation.

  • Customer Identifier:

    • Enter the Deem-supplied Customer Identifier (all capital letters)

    • Contact your Deem representative if you did not receive this identifier, which defines a specific customer and is created during implementation.

  • Client ID Number:

    • Enter the number to be used when optional reporting is required.

  • Customer DK Number:

    • Enter the number to be used when optional reporting is needed.

Via Rail Specific Support: Follow these steps:

  • Add passive train segment to primary GDS?:

    • Select Yes or No

      • A passive segment is a set of trip information entered into the GDS that does not cause a ticket to be issued by the GDS. For example, a traveler may be taking a train between cities, and although you do not use the GDS to issue the train ticket, you may want all of the trip information to be in one place for the traveler's benefit, and so that agents can generate itineraries or make notes. 

        • By default, no information is saved in the GDS unless you select Yes. 

          • See below for examples of passive segments

  • Message for Train support procedure and phone numbers: 

    • Enter the message to appear to the traveler on the purchase page and on confirmation messages.

      • Note: Do not include HTML tags or travel lingo

  • Train support phone number for mobile client:

    • Enter the phone number to appear in the mobile client if the number is different from other support numbers

  • Scroll to the bottom and click Save

Private Rate Configuration

Breakdown

Steps to Configure

Please take the following steps if your client or TMC has a private rate with Via

  • Click on Service Tab

  • Click on Private Rates

  • Click on Train Rates

  • Click on Add a New Train Private Rate

  • Check box to the left of Activate this private rate

  • Private Rate Name: Enter Name

    • Example: Via Rail Private Rate

  • Enter the effective date range for this rate record: Not required, you can leave blank unless your client has a specific start and end date for their private rate.

  • Select a train carrier: Select Via Rail Canada from dropdown menu

  • Discount Code: Enter Customer or TMC Via Rail Discount Code

  • Click Save

  • Click on Back to Private Rates:

  • Click on Add A New Train Private Rate Set

  • Private Rate Set Name: Enter Name of Rate

    • Example: Via Rail Private Rate

  • Click Add Rates

  • Click on radio button to the left of the rate you would like to add to the set

  • Click Ok

  • Click Save

Commit Changes and Test

Be sure to commit all changes you have completed during this configuration.

  • Click Changes not applied in the upper right hand corner

  • Click on Commit

  • Success message will be displayed

  • Now Test to ensure you are seeing rail bookings and that they are being processed properly.  Ensure you are booking refundable rates, if you intend to complete a test booking.

Passive Segments

Sabre Passive Segment

Segment Example

Breakdown

0RAL2VGK1NYPBOS19DEC-LV-900A/AR-100P/NA- TRAIN 66/SI-BKD ONLINE/CF-123ABC

  • 0RAL = constant

  • 2V = Rail code – 2V is Via code

  •  GK1 = Constant

  •  NYP = Departure Station

  •  BOS = Arrival station

  •  19DEC = Travel date

  •  -LV- = Constant

  •  900A = Departure time /DT-=Constant

  •  19DEC = Arrival date

  •  /AR- = Constant

  •  100p = Arrival time

  •  /NA- = Constant

  • Via = Carrier code

  • 66 = Train number

  • SI-BKD ONLINE/CF- = Constant

  • ABCDEF- = Record Locator

Apollo Passive Segment

Segment Example

Breakdown

02V95Y24SEPNYPPHLBK1/1035A1157A

  • 02V = Constant

  • 95Y = Train number and class

  • 24SEP = Departure Date

  • NYP = Departure Station code

  • PHL = Arrival Station code

  • BK1/ = Constant

  • 1035A = Departure Time

  • 1157A = Arrival Time

Worldspan Passive Segment

Segment Example

Breakdown

TN2VMK1TRN24MAR/CC1-NYP/CC2-WAS/AN-Via 1229/TD-1000AM/TA-1130AM/CF-1234234

  • TN = Constant

  • 2V = Carrier Code

  • MK1TRN = Constant

  • 24MAR = Departure Date

  • /CC1- = Constant

  • NYP = Departure Station code

  • /CC2- = Constant

  •  WAS = Arrival Station Code

  • /AN- = Constant

  • Via 1229 = Carrier Name <sp> Train number

  •  /TD- = Constant

  •  1000AM = Departure Time

  •  /TA- = Constant

  •  1130AM = Arrival Time

  •  /CF- = Constant

  •  1234234 = Via Record Locator

PNR Scripts

Sabre PNR Editor Scripts

Function

Script

Error when Form of Payment is Declined

//Via RECORD LOCATOR - INVALID

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

 if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator.substring (0,9);

{if (rr =="B-REARDEN") {out.print("5H-SPCL-VERIFY TICKET STATUS W Via POSS DECLINED FOP");}

}}}

For when no confirmation is received from Via regardless of the reason (other than declined FOP)

//Via RECORD LOCATOR - NOT RECEIVED

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

 if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator;

{if ((rr =="")||(rr==undefined))

{out.print("5H-SPCL-VERIFY TICKET STATUS WITH Via");}}}}

Via Confirmation Number

//Via RECORD LOCATOR

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

 if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("5A$-Via LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

No Passive Segments Needed

//Via RECORD LOCATOR when no passive segments are needed

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

 if (rl.length() > 0)

{if ((rl.RailSegment.length() > 0)&&((UserPnrData.UserBooking.HotelBooking != undefined)||(UserPnrData.UserBooking.CarBooking != undefined)))

{out.print("5H-Via LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

Class of Service Booked

//Via CLASS OF SERVICE

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "purchase_hold")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

 if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("5A$-Via CLASS OF SVC " + rl.RailSegment[0].ClassCode);}}}

Form of Payment

//RAIL FOP

if((UserPnrData.DataType=="purchase_hold")||(UserPnrData.DataType=="new")){with (UserPnrData.UserSession.PurchaseInfo.RailBilling) {

var cardtype;

 if (BrandType.substring(0,4) == "Visa") { cardtype = "VI"; } else if (BrandType.substring(0,4) == "Amer") { cardtype = "AX"; } else if (BrandType.substring(0,4) == "Mast") { cardtype = "CA"; } else if (BrandType.substring(0,4) == "Disc") { cardtype = "DS"; } else if (BrandType.substring(0,3) == "JCB") { cardtype = "JC"; } else if (BrandType.substring(0,4) == "Cart") { cardtype = "CB"; } else if (BrandType.substring(0,4) == "Dine") { cardtype = "DC"; } else if (BrandType.substring(0,4) == "Univ") { cardtype = "TP"; } else if (BrandType.substring(0,4) == "EnRo") { cardtype = "ER"; } else { cardtype = "XX" }

var year=ExpirationDate.Year;

var myyear=year.substring(2,4);

var mymonth=ExpirationDate.Month;

        if (mymonth == "JAN") {mymonth = "01";}

        else if (mymonth =="FEB") {mymonth = "02";}

        else if (mymonth == "MAR") {mymonth = "03";}

        else if (mymonth == "APR") {mymonth = "04";}

        else if (mymonth == "MAY") {mymonth = "05";}

        else if (mymonth == "JUN") {mymonth = "06";}

        else if (mymonth == "JUL") {mymonth = "07";}

        else if (mymonth == "AUG") {mymonth = "08";}

        else if (mymonth == "SEP") {mymonth ="09";}

        else if (mymonth =="OCT") {mymonth = "10";}

        else if (mymonth == "NOV") {mymonth = "11";}

        else if (mymonth =="DEC") {mymonth = "12";}

if (UserPnrData.UserSession.PurchaseInfo.RailBilling != undefined)

out.print("50/-*" + cardtype + CardNumber + "$" + mymonth + "/" + myyear + "-xn");}}

Total Fare

//FARE QUOTE - RAIL

if(((UserPnrData.DataType == "new") || (UserPnrData.DataType=="purchase_hold") || (UserPnrData.DataType == "change")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{out.print("5A$VIA Rail FARE QUOTE - " + UserPnrData.UserBooking.RailBooking.RailFare.RailTotalFare.TotalFare);}

Apollo PNR Editor Scripts

Function

Script

Error when Form of Payment is Declined

//Via RECORD LOCATOR - INVALID

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator.substring (0,9);

{if (rr =="B-REARDEN") {out.print("@:5A/SPCL-VERIFY TICKET STATUS W Via POSS DECLINED FOP");}}}}

For when no confirmation is received from Via regardless of the reason (other than declined FOP)

//Via RECORD LOCATOR - NOT RECEIVED

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator;

{if ((rr =="")||(rr==undefined))

{out.print("@:5A/SPCL-VERIFY TICKET STATUS WITH Via");}}}}

Via Confirmation Number

//Via RECORD LOCATOR

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("@:5A/Via LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

No Passive Segments Needed

//Via RECORD LOCATOR when no passive segments are needed

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if ((rl.RailSegment.length() > 0)&&((UserPnrData.UserBooking.HotelBooking !=

undefined)||(UserPnrData.UserBooking.CarBooking != undefined)))

{out.print("@:5A/Via LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

Class of Service Booked

//Via CLASS OF SERVICE

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "purchase_hold")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("@:5A/Via CLASS OF SVC " + rl.RailSegment[0].ClassCode);}}}

Form of Payment

//RAIL FOP

if((UserPnrData.DataType=="purchase_hold")||(UserPnrData.DataType=="new")){with

(UserPnrData.UserSession.PurchaseInfo.RailBilling) {

var cardtype;

if (BrandType.substring(0,4) == "Visa") { cardtype = "VI"; } else if (BrandType.substring(0,4) == "Amer") { cardtype =

"AX"; } else if (BrandType.substring(0,4) == "Mast") { cardtype = "CA"; } else if (BrandType.substring(0,4) == "Disc") {

cardtype = "DS"; } else if (BrandType.substring(0,3) == "JCB") { cardtype = "JC"; } else if (BrandType.substring(0,4)

== "Cart") { cardtype = "CB"; } else if (BrandType.substring(0,4) == "Dine") { cardtype = "DC"; } else if

(BrandType.substring(0,4) == "Univ") { cardtype = "TP"; } else if (BrandType.substring(0,4) == "EnRo") { cardtype =

"ER"; } else { cardtype = "XX" }

var year=ExpirationDate.Year;

var myyear=year.substring(2,4);

var mymonth=ExpirationDate.Month;

if (mymonth == "JAN") {mymonth = "01";}

else if (mymonth =="FEB") {mymonth = "02";}

else if (mymonth == "MAR") {mymonth = "03";}

else if (mymonth == "APR") {mymonth = "04";}

else if (mymonth == "MAY") {mymonth = "05";}

else if (mymonth == "JUN") {mymonth = "06";}

else if (mymonth == "JUL") {mymonth = "07";}

else if (mymonth == "AUG") {mymonth = "08";}

else if (mymonth == "SEP") {mymonth ="09";}

else if (mymonth =="OCT") {mymonth = "10";}

else if (mymonth == "NOV") {mymonth = "11";}

else if (mymonth =="DEC") {mymonth = "12";}

if (UserPnrData.UserSession.PurchaseInfo.RailBilling != undefined)

out.print("F-*" + cardtype + CardNumber + "/D" + mymonth + myyear);}}

Total Fare

//FARE QUOTE - RAIL

if(((UserPnrData.DataType == "new") || (UserPnrData.DataType=="purchase_hold") || (UserPnrData.DataType ==

"change")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{out.print("@:5A/VIA RAIL FARE QUOTE - " + UserPnrData.UserBooking.RailBooking.RailFare.RailTotalFare.TotalFare);}

Worldspan PNR Editor Scripts

Function

Script

Error when Form of Payment is Declined

//Via RECORD LOCATOR – INVALID

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator.substring (0,9);

{if (rr =="B-REARDEN") {out.print("5.O SPCL-VERIFY TICKET STATUS W Via POSS DECLINED FOP");}}}}

For when no confirmation is received from Via regardless of the reason (other than declined FOP)

//Via RECORD LOCATOR - NOT RECEIVED

if((UserPnrData.DataType=="hold")||(UserPnrData.DataType=="new"))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

var rr = rl.RailSegment[0].RecordLocator.Locator;

{if ((rr =="")||(rr==undefined))

{out.print("5.O SPCL-VERIFY TICKET STATUS WITH Via");}}}}

Via Confirmation Number

//Via RAIL RECORD LOCATOR

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("@:5A/VIA RAIL LOC " + rl.RailSegment[0].RecordLocator.Locator);}

}}//Via RECORD LOCATOR

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("5.O VIA RAIL LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

No Passive Segments Needed

//Via RECORD LOCATOR when no passive segments are needed

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "hold")) &&

(UserPnrData.UserBooking.RailBooking != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if ((rl.RailSegment.length() > 0)&&((UserPnrData.UserBooking.HotelBooking !=

undefined)||(UserPnrData.UserBooking.CarBooking != undefined)))

{out.print("5.O VIA RAIL LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}}

Class of Service Booked

//VIA RAIL CLASS OF SERVICE

if ( ((UserPnrData.DataType=="new") || (UserPnrData.DataType == "purchase_hold")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{var rl = UserPnrData.UserBooking.RailBooking.RailLeg;

if (rl.length() > 0)

{if (rl.RailSegment.length() > 0)

{out.print("5.O Via Rail CLASS OF SVC " + rl.RailSegment[0].ClassCode);}}}

Form of Payment

//RAIL FOP

if((UserPnrData.DataType=="purchase_hold")||(UserPnrData.DataType=="new")){with

(UserPnrData.UserSession.PurchaseInfo.RailBilling) {

var cardtype;

if (BrandType.substring(0,4) == "Visa") { cardtype = "VI"; } else if (BrandType.substring(0,4) == "Amer") { cardtype =

"AX"; } else if (BrandType.substring(0,4) == "Mast") { cardtype = "CA"; } else if (BrandType.substring(0,4) == "Disc") {

cardtype = "DS"; } else if (BrandType.substring(0,3) == "JCB") { cardtype = "JC"; } else if (BrandType.substring(0,4)

== "Cart") { cardtype = "CB"; } else if (BrandType.substring(0,4) == "Dine") { cardtype = "DC"; } else if

(BrandType.substring(0,4) == "Univ") { cardtype = "TP"; } else if (BrandType.substring(0,4) == "EnRo") { cardtype =

"ER"; } else { cardtype = "XX" }

var year=ExpirationDate.Year;

var myyear=year.substring(2,4);

var mymonth=ExpirationDate.Month;

if (mymonth == "JAN") {mymonth = "01";}

elseif (mymonth =="FEB") {mymonth = "02";}

else if (mymonth == "MAR") {mymonth = "03";}

else if (mymonth == "APR") {mymonth = "04";}

else if (mymonth == "MAY") {mymonth = "05";}

else if (mymonth == "JUN") {mymonth = "06";}

else if (mymonth == "JUL") {mymonth = "07";}

else if (mymonth == "AUG") {mymonth = "08";}

else if (mymonth == "SEP") {mymonth ="09";}

else if (mymonth =="OCT") {mymonth = "10";}

else if (mymonth == "NOV") {mymonth = "11";}

else if (mymonth =="DEC") {mymonth = "12";}

if (UserPnrData.UserSession.PurchaseInfo.RailBilling != undefined)

out.print("50/-*" + cardtype + CardNumber + "$" + mymonth + "/" + myyear + "-xn");}}

Total Fare

//FARE QUOTE - RAIL

if(((UserPnrData.DataType == "new") || (UserPnrData.DataType=="purchase_hold") || (UserPnrData.DataType ==

"change")) &&

(UserPnrData.UserBooking.RailBooking.PassengerInfo != undefined))

{out.print("5.O VIA RAIL FARE QUOTE - " + UserPnrData.UserBooking.RailBooking.RailFare.RailTotalFare.TotalFare);}

  • No labels