Skip to content

Flight Schedules From SSIM

IATA SSIM (Standard Schedule Info Manual) to read Flight Schedules.

SSIM

Background

As an engineer working with airline industry, I was privileged to work with SSIM files and write a parser tool to read these SSIM files. How I created a high performance parser is a discussion for another post, this post is about trying to understand SSIM file.

Introduction

Flight schedules are one of the most fundamental blocks for anyone working with airline industry. Airlines market itself heavily on their adherence to schedules, no one really likes delays!

But ever wonder how airline and your favorite booking applications or other travel agencies get the airline schedules? Well, there can be multiple ways, but one of the most basic way for bulk schedules is by a big flat file called as SSIM. It is a standardized flat file by IATA and stands for Standard Schedule Info Manual. IATA has published entire manual and is publicly available here.

Depending on the airline, at a time it can have several hundred to millions of records. Also, the time frame can vary from schedules to a couple of weeks to an entire year. So now you get the idea, for BULK flight schedules SSIM is commonly used in industry. There can be many third party agencies who convert these SSIM files into more understandable formats like json or csv.

Records

Chapter 7 of SSIM manual deals with flight schedules and record form the building blocks for schedule. Records are essentially 200 bytes long and are of 5 types -

  1. Header Record -> 1
  2. Carrier Record -> 2
  3. Flight Leg Record -> 3
  4. Segment Record -> 4
  5. Trailer Record -> 5

The layout of these 200 bytes is slightly more invovled to mention here, refer the manual for details, but below are examples of how these raw records and parsed records look like.

1. Header Record

Raw Record -

1AIRLINE STANDARD SCHEDULE DATA SET                                                                                                                                                            001000001

Parsed -

[
    record_type: 1,
    title_of_contents: "AIRLINE STANDARD SCHEDULE DATA SET",
    data_set_serial_number: 1,
    record_serial_number: 1
]

2. Carrier Record

Raw Record -

2UXX  0008    07DEC2103MAR2203DEC21Created by OCTLM Airlines           PCreated by OCTLM Airlines                                                                                           EN2100000002

Parsed -

[
    record_type: 2,
    time_mode: "U",
    airline_designator: "XX",
    spare1: "0008",
    validity_start_date: "2021-12-07",
    validity_end_date: "2022-03-03",
    creation_date: "2021-12-03",
    title_of_data: "Created by OCTLM Airlines",
    schedule_status: "P",
    creator_reference: "Created by OCTLM Airlines",
    etkt_info: "EN",
    creation_time: "21:00:00",
    record_serial_number: 2
]

3. Flight Leg Record

Raw Record -

3 XX  0450101J07DEC2402FEB251234567 ABC23502350+1000I XYZ06000600+0800I 7M8XX                                                                       X                       J8Y174                000003

Parsed -

[
    aircraft_configuration_version: "J8Y174",
    ​aircraft_type: "7M8",
    ​airline_designator: "XX",
    ​arrival_station: "XYZ",
    ​days_of_operation: [ 1, 2, 3, 4, 5, 6, 7 ],
    ​departure_station: "ABC",
    flight_number: "045",
    ​itinerary_variation_identifier: 1,
    ​leg_sequence_number: 1,
    ​operating_airline_disclosure: "X",
    ​operational_from: "2024-12-07",
    ​operational_to: "2025-02-02",
    ​passenger_reservations_booking_designator: "XX",
    ​passenger_terminal_arrival: "I",
    ​passenger_terminal_departure: "I",
    ​record_serial_number: 3,
    ​record_type: 3,
    ​scheduled_time_aircraft_arrival: "06:00:00",
    ​scheduled_time_aircraft_departure: "23:50:00",
    ​scheduled_time_passenger_arrival: "06:00:00",
    ​scheduled_time_passenger_departure: "23:50:00",
    ​service_type: "J",
    ​utc_local_time_variation_arrival: "+0800",
    ​utc_local_time_variation_departure: "+1000",
]

4. Segment Record

Raw Record -

4 XX  0450101J              AB106ABCXYZJCDZYBWHKLREONVPQTISFUMAGX                                                                                                                                 000004

Parsed -

[
    record_type: 4,
    airline_designator: "XX",
    flight_number: "045",
    itinerary_variation_identifier: 1,
    leg_sequence_number: 1,
    service_type: "J",
    board_point_indicator: "A",
    off_point_indicator: "B",
    data_element_identifier: "106",
    board_point: "ABC",
    off_point: "XYZ",
    data_associated_with_identifier: "JCDZYBWHKLREONVPQTISFUMAGX",
    record_serial_number: 4
]

5. Trailer Record

Raw Record -

5 XX 03DEC21                                                                                                                                                                               000989E000990

Parsed -

[
    record_type: 5,
    airline_designator: "XX",
    release_date: "2021-12-03",
    serial_number_check_ref: 989,
    continuation_end_code: "E",
    record_serial_number: 990
]