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.
To download above documents:
Click on desired document
Click on cloud symbol in the upper right-hand corner of your screen, this will allow you to download, save and/or print
Benefits and Need to Know
Benefits and Need to Know | |
Benefits |
|
Need to Know |
|
Steps to Configure
Agency Settings |
|
PNR Mapping |
|
Private Rates |
|
Travel Policy |
|
Display Policy |
|
Travel Service Rules |
|
Agency Settings Configuration
Accessing Agency Settings | Agency Setting configurations will clone over to your template site.
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.
Amtrak Specific Support: Follow these steps:
|
Private Rate Configuration
Breakdown | |
Steps to Configure | Please take the following steps if your client or TMC has a private rate with Amtrak
|
Commit Changes and Test | Be sure to commit all changes you have completed during this configuration.
|
Passive Segments
Sabre Passive Segment
Segment Example | Breakdown |
0RAL2VGK1NYPBOS19DEC-LV-900A/AR-100P/NA- TRAIN 66/SI-BKD ONLINE/CF-123ABC |
|
Apollo Passive Segment
Segment Example | Breakdown |
02V95Y24SEPNYPPHLBK1/1035A1157A |
|
Worldspan Passive Segment
Segment Example | Breakdown |
TN2VMK1TRN24MAR/CC1-NYP/CC2-WAS/AN-AMTRAK 1229/TD-1000AM/TA-1130AM/CF-1234234 |
|
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);} |
Add Comment