Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

View file
nameAmtrak Rail Service_14Sept23.pdf

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.

Amtrak Rail Services

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. 

Table of Contents
minLevel1
maxLevel6
outlinefalse
typelist
printablefalse

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
  • If rail is configured on your Template site,

as
  • the configuration will clone over to all new sites

You
  • .

    • If the client does not require rail services, you can disable rail by unchecking rail within each

Travel Service Rule in the Travel Service Rules, and onySabre
    • Service Rules. Once disabled under Service Rules rail will not be offered to the client and all other configurations will not trigger.

Need to Know

Supported GDS

  • If this is the first time the TMC has programmed 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.

  • Deem currently cannot support multiple rail services under the same Agency Setting. Meaning you are unable to combine Amtrak and Via Rail under the same configuration. For Amtrak, the Sales Location must be within in the United States.

Image Added
  • Supported GDS

    • Sabre

    • Galileo (Apollo)

    • Worldspan

    • Amadeus

    • (No passive segment PNR write back

Travelers can store their Amtrak Membership program numbers in their profiles
    • ).

  • Reward membership program/number will be applied to the booking.

  • 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
  • client’s 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 this is the first time you have enabled Amtrak please open a Deem Support Case to establish your TMC Customer Identification information.

...

 Areas to

...

Configuration

Configuring Agency Settings

Clones over from Template site

Note:
  • Best practice to add your TMC Customer Identification information within your template site.

This way when
  • When you

clone
  • create your site,

minimal programming is needed.Only need to change if the customer will be using a site card for billing rail. See attached template, you can fill our and attach to the case you need to open
  • the information will clone over during cloning process. 

    • If the client does not require rail services, you can disable rail by unchecking rail within each Service Rules. Once disabled under Service Rules rail will not be offered to the client and all other configurations will not trigger.

  • Only need to change the Customer Identification information, if the customer is purchasing with a Site Payment Card

    • 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.  
    • Deem Support Case. Deem will work with Silver Rail to obtain the client’s Customer Identification information. Deem will then update the case with the information, or you to update the client’s site.

    • See attached template (top of the Wiki Article): You complete and attach to the Deem Support case.

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 US airport code is entered, then it is US’s Amtrak 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

    ...

    Amtrak 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 Amtrak

    • 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: Amtrak 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 Amtrak from dropdown menu

    • Discount Code: Enter Customer or TMC Amtrak Discount Code

    • Click Save

    ...

    • Click on Back to Private Rates:

    ...

    • Click on Train Rates Sets

    • Click on Add A New Train Private Rate Set

    ...

    • Private Rate Set Name: Enter Name of Rate

      • Example: Amtrak 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 Amtrak 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

    • Amtrak = 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-AMTRAK 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

    • AMTRAK 1229 = Carrier Name <sp> Train number

    •  /TD- = Constant

    •  1000AM = Departure Time

    •  /TA- = Constant

    •  1130AM = Arrival Time

    •  /CF- = Constant

    •  1234234 = Amtrak Record Locator

    PNR Scripts

    Sabre PNR Editor Scripts

    ...

    Function

    ...

    Script

    ...

    Error when Form of Payment is Declined

    ...

    //AMTRAK 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 AMTRAK POSS DECLINED FOP");}

    }}}

    ...

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

    ...

    //AMTRAK 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 AMTRAK");}}}}

    ...

    Amtrak Confirmation Number

    ...

    //AMTRAK 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$-AMTRAK LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

    ...

    No Passive Segments Needed

    ...

    //AMTRAK 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-AMTRAK LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

    ...

    Class of Service Booked

    ...

    //AMTRAK 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$-AMTRAK 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$AMK FARE QUOTE - " + UserPnrData.UserBooking.RailBooking.RailFare.RailTotalFare.TotalFare);}

    Apollo PNR Editor Scripts

    ...

    Function

    ...

    Script

    ...

    Error when Form of Payment is Declined

    ...

    //AMTRAK 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 AMTRAK POSS DECLINED FOP");}}}}

    ...

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

    ...

    //AMTRAK 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 AMTRAK");}}}}

    ...

    Amtrak Confirmation Number

    ...

    //AMTRAK 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/AMTRAK LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

    ...

    No Passive Segments Needed

    ...

    //AMTRAK 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/AMTRAK LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

    ...

    Class of Service Booked

    ...

    //AMTRAK 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/AMTRAK 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/AMK FARE QUOTE - " + UserPnrData.UserBooking.RailBooking.RailFare.RailTotalFare.TotalFare);}

    Worldspan PNR Editor Scripts

    Function

    Script

    Error when Form of Payment is Declined

    //AMTRAK 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 AMTRAK POSS DECLINED FOP");}}}}

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

    //AMTRAK 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 AMTRAK");}}}}

    Amtrak Confirmation Number

    //AMTRAK 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/AMTRAK LOC " + rl.RailSegment[0].RecordLocator.Locator);}

    }}//AMTRAK 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 AMTRAK LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}

    No Passive Segments Needed

    //AMTRAK 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 AMTRAK LOC " + rl.RailSegment[0].RecordLocator.Locator);}}}}

    Class of Service Booked

    //AMTRAK 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 AMTRAK 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("5.O AMK FARE QUOTE - " + UserPnrData.UserBooking.RailBooking.RailFare.RailTotalFare.TotalFare);}

    .

    • On the Services tab, select Travel Agency.

    Image Added
    • Select Agency Settings.

    Image Added
    • Select active Agency Setting.

    Image Added
    • Sales Location: Must be a US airport code for Amtrak services to be offered.

    Image Added
    • Channel: 

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

    • Agency Identifier:

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

    • Customer Identifier:

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

    • Agency Identifier:

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

    • Customer Identifier:

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

    • 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.

    Image Added

    Amtrak 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 user 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 user'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 user 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.

    Image Added
    • Scroll to the bottom and Select Save.

    Image Added

    PNR Mapping

    • Clones over from Template site.

    • Deem has provided scripts you can add to template and existing sites. Please click link for further information around Rail PNR Editor Scripts.

    Rail Private Rates

    • Clones over from Template site.

    • Click link for further information around Rail Private Rates.

    Travel Policy

    • Clones over from Template site.

    Note: For Acela to appear you must allow users to book Business Class.

    Image Added

    Display Configurations

    Service Rules

    • Clones over from Template site.

    Note: To enable users to book rail, you must enable it within Service Rules.

    Image Added

    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  search or book Amtrak.  

    Commit Changes and Test

    • Commit changes.

    Image Added
    • Test to ensure you are seeing rail bookings and that they are being processed properly.  

    Note: Book 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 Amtrak 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

    • Amtrak = 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-AMTRAK 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

    • AMTRAK 1229 = Carrier Name <sp> Train number

    •  /TD- = Constant

    •  1000AM = Departure Time

    •  /TA- = Constant

    •  1130AM = Arrival Time

    •  /CF- = Constant

    •  1234234 = Amtrak Record Locator