Page tree

API Summary Documentation: SPD0102_API_Summary_Ticketing(REST) 1.47.doc

This document described the integration with Fortress, where Fortress is handled as an access control interface AND as external printer interface.

This integration has been delivered.

General Principle:

 Fortress GB is an access control system deployed by many UK football clubs.

It provides SecuTix clients with two basic sets of functionalities.

An access control system

Fortress GB is handling access control at the gates with a strong limitation:

Fortress GB does not handle retrieval of controlled tickets. The controlled status of the tickets cannot be retrieved in SecuTix.

An external printing system

Fortress is printing the RFID cards for season tickets for SecuTix clients, with two main cases:

Direct printing at the box-office on "real" printers

Mass printing on "virtual" printers (ticket data are only sent to Fortress)


Fortress being two systems in once in SecuTix point of view, we need to set up two external interfaces: an access control interface and an external printer interface.

It also provides smart barcode functionality that you must activate.

Prerequisites:

Check with Platform team that the steps defined in Fortress GB Switch from V1 to V2 are done. 

Smart barcode

To activate the smart barcode (encrypted barcode understood by Fortress scanners), go in the organization screen and select "Access control type: Fortress GB"

It will generate a Fortress barcode for all the tickets linked to a seat linked to an area mapped to Fortress through an access control mapping (see below). Else it will generate a Date SecuTix barcode.

Concession barcode

Fortress tickets may have two barcodes, one being the concession barcode, displayed in template using key exr_fortress_concession_barcode

To have this concession barcode please follow the following setup: set the parameter Concession tariff id in the interface with the integer id provided by Fortress support.

It is also possible to override this id for a given tariff by modifying its mapping, setting an external id with a WW_DD_DD structure (code + id1 + id2), id2 being the id of the concession tariff, to be provided by Fortress Team.

Important: if neither of these two methods is used, the concession Barcode will not be generated, but the ticket purchase will still work. This new barcode will be stored in an external reference related to the movement. It can be seen in the ticket details screen.

Restrictions related to smart barcode

Fortress barcode can only be used for seated sales. It is not possible to sell passes with Fortress, nor to do sales in "without seating" mode.


Access Control Interface:

Set up

Create an access control interface of type "Fortress GB"

New Interface →  Control Interface →  Fortress GB Control Plugin

Fill the values on the previous image, which should all be provided by the client or by his Fortress provider.

For the URL → remember to have the URL authorized through Secutix proxy.

A new parameter has been added to identify club through member ID´s in Season cards. That will modify the Ticket number format, as it will contain, first what is on the new parameter field followed by "-" and then ticket ID. See Image below:

 Mappings.

  • Fill area and block mappings, for every area and block of the stadium/venue that will be controlled by Fortress.
  • Check that the physical configuration code is the same as the stadium code defined in Fortress.
  • Check that the entrances' codes are the same as the gate codes defined in Fortress.
  • Mappings are defined only in the access control interface. The printing interface must be linked to the access control interface.

Important: Mapping of Concepts

Complex mappings: use both codes and ids

When creating a new mapping for performance, tariff, entrance and season, please use the following format in the external ID to avoid errors:

Codes and ids are provided by Fortress team.

Advanced: useful Webservices to know Fortress IDs

For people expert in using postman, it is possible to get codes, ids or even create some entities using Fortress Webservices.

Tariffs: Get Price Band List (POST)

Name: PriceBandList

Description: get a list of all available price bands code on the Fortress Database

Request URL: http://{endpoint}/api/Products/PriceBandList/

 Performances: Getproductlist (POST)

Name: ProductList

Description: Return a list of products available on the fortress server

Request URL: http://{endpoint}/api/Products/ProductList/

 Entrances: Get Service List (POST)

Name: ServiceList

Description: Return a list of Services available on the fortress server

Request URL: http://{endpoint}/api/Products/ServiceList/

Schedule

There are two functions in the schedules in the Access control interface developed for v2: Synchronize Tickets and retrieve controlled tickets. For this fortress set up, add just synchronize tickets.

Configuration

Launch: Manual or Automatic

Batch size: 100 default

Event and performance: follow the formatà eventCode;DD/MM/YY hh:mm (24hours format)

Extract Fortress actual active data for comparison (do not use systematically): If it is active, Secutix system  call Fortress webservice  for a specific  match(indicated on the previous parameter) which will compare all the tickets from Secutix and fortress (valid or invalid)

Skip tickets: If the ticket is in Secutix list but not in Fortress, It will be included and sent to Fortress, If it is already on fortress list, it will be skipped, no further actions will be executed. Operator can select tickets to avoid sync with fortress. This ticket will always be ignored on the calls to fortress WS.

Search ticket Parameter format

Cancelled tickets are flagged as error and are not flagged as “synchronized” . A change has been made so that is not an error, it is just a warning in the log lines.

Important

Please make sure that this function is executed at least 2 days before the match, on automatic basis every 20 minutes. In case there are errors, read the log lines and contact support, please provide all the available information.

External Printing System

The goal of this interface is to print season tickets. It will not work with a different product e.g. a ticket for a specific match.

Set up

Create at least one "Fortress GB" printer for a workstation

Organization →  Initialization →  Workstations

Create a hardware record Card printer/Fortress GB printer for the workstation that will effectively print the season tickets. Take note of its logical name.

For the same workstation, add this new hardware to 'Hardware order' Badge printer and Document printer:

Create an external printing interface of type "Fortress GB"

New Interface →  External Printing Interface → Printing Interface Fortress GB

Fill the values, which should all be provided by the client or by his Fortress provider. Those are the same one as for the access control interface (but  It is MANDATORY to replicate them here)

  • Url → remember to have the url authorized through SecuTix proxy.
  • Login
  • password
  • Agency code
  • AppId
  • API key

All of them are mandatory.

Other values

Fill the value "Parent Interface", and select the access control interface created before. It will allow the printing interface to retrieve mappings from the parent interface.

Fill the values "sales channel code/point of sales code", to define which point of sale will do the virtual printing.

Fill the value "Printer logical name for direct printing" with the logical name of the printer that will be directed to Fortress for direct printing.

Then fill the following mappings:

Fill a product mapping in the access control interface for every season ticket that will need to be printed in Fortress. (the product must be created in Fortress in parallel)

The fact that the access control interface is the parent interface makes it owner of all the mappings.


Print immediately

In order to be able to use the Print immediately when you finish the purchase process it's necessary that the season ticket you are using has the following configuration:

Schedules

There are 2 schedules within this External Printing Interface, both of them for Season Tickets:

  1. Import Card Number.
  2. Ticket External Printing.

Import Card Number


Launch: Manual

Batch size: 1

Product printables: Select season tickets for current season

Tickets external printing

Launch: Manual

Batch size: 1

Product printables: Select season tickets for the current season.

It is possible to filter by product:


If non-ticket is selected: All will be printed.

Season: Select season, by default current.

Product family: To filter by family → Membership or Season Ticket

New Season ticket Renewal

When printing the ST Cards through the Tickets' external printing Function, on External Printing Interface, ST will be automatically renewing the same cards; if the renewal is not possible, New ST Cards will be printed for the Fans.

Conditions for a ST to be renewed

1. Tariff mapping (e.g. a young person, can pass to an adult; hence it would new a new ST card) matches with both old ST and new ST that will be renewed.

2.  Seat (same area mapping, block mapping, seat row, seat number) matches with both old ST and new ST that will be renewed.

3. Same cultural contact  matches with both old ST and new ST that will be renewed.

A new specific section added → Previous season ticket to renew:

Season: The season of the ticket that will be renewed.

Product family: Season ticket

Product to renew: Specific season tickets to be renewed.

Print from multiple printers

In order to be able to print from multiple printers, the current Virtual printer Code will be able to process tickets, printing them from more than one printer at the same time. Conditions as follows: 

the code is taken from the Logical name from the printer fro fortress in Organization> Inisialisation> Worksation> Hardware

  1. Add printer codes separated by comas in Virtual printer Code current field.
  2. Season tickets will be printed grouped by order from lowest to highest number.
  3. Each printer will be printing per order, not for individual Season card. When starting to print an order it Will be finalized always by the same printer.

*Please consider that this feature just works for mass printing, if a ticket it is printed from the file, make sure that the Printer logical name for direct printing  matches with the printer chosen for printing and reprinting tickets from the file.

Access control interface - frequent error message

Due to the complexity of the interface and the integration and the absence of idempotency, the following error messages are likely to show up.

MessageCauseAction
[External error] Ticket with id 101729574868 [Barcode: 676852034024835003760168] could not be synchronized. The expected ACN is 7063357 but the one received is 7063358. Please open a Support ticket.

Consequences of a legacy bug in barcode generation. Some wrong ACN are still in the database, but we cannot identify them in advance.




Will be definitely solved with that JIRA STX-130152 - Getting issue details... STATUS

In between, execute the following script:

Ticket with id ticketId [Barcode: xxxxxx] could not be synchronized. The expected ACN is expectedACN  but the one received is 7063358. (----).

update ticket
set additionnal_info='ACN=expectedACN'
where ticket_id=ticketId;
TicketID 101835793445 could not be synchronized due to error: H For ProductCode T23C02-1 GameNumber is 179 but GameNumber extracted from the barcode is 180The ID mapping of the performance did change between the time when the barcode was generated and the time when the synchronization occurred
  1. Add the id to the list of skipped ids
  2. Have the operators reprint the ticket
  3. Communicate to the operators the importance of having the ID mappings rightly set up

[External error] Ticket with id 101812059516 [Barcode: 251146686039192242229055,Container Identifier: 244242,MemberID: 30034444] could not be synchronized due to the provided Membership ID was not found in the Fortress System. Please open a support ticket to investigate this issue.

Data issue, member id is missing in additionnal_info table.


  1. Fix this by script (not needed after this jira)
[External error] Ticket with id 101853377597 [Barcode: 070056601236163218016034,Container Identifier: 245819] could not be synchronized due to multiple card with the same Member Id. Ask Fortress support to fix this on their side.Error on Fortress side. Cause unknown.
  1. Contact Fortress as indicated. In-between, add the ticket ids to the ignored tickets list.
Warning: product T23C02-1 could not be synchronized due to error: H Membership is not Active (FGB_Web)This error message is due to the fact that the tickets has already been synced when V1 of the interface was active.
  1. Do nothing



Frequent Asked Questions (FAQ)

Why are Tickets compared between Secutix and Fortress?

The new parameter which compares a list of tickets between Secutix and Fortress within the synchronize tickets schedule in Access Control Interface (Please refer to Ticket Synchronization schedule) has been created because none of the Fortress Services are idempotent. That means that, when calling a Fortress Webservice in multiple occasion, execution will fail because tickets would have been added previously to FT system

How does work the parameter to synchronize tickets for a specific match?

 The mandatory parameter, located on the Access Control Interface (Synchronize ticket schedule) “Event and performance” to synchronize ticket for a match follows the format: eventCode;DD/MM/YY hh:mm

  • Be aware that time format is 24 hours.
  • EventCode must match with the code given when creating that match

Filtering by this parameter, just tickets from the specific match will be called in Fortress System.

Why is a ticket not present in Fortress when I print it during the purchase order, as it was the case with V1?

Even if a ticket has been printed on Secutix while a purchase has been completed, operator will need to use access control  interface and synchronise the tickets to call Fortress system and push the ticket on FT system. This will allow Secutix to communicate fortress that a ticket has been sold for the chosen match.

How Can I validate that Access control Interface is working properly?

1.Sell a ticket for each stand (STX = Area) of the venue, wait depending of Schedule synchronization ticket, check that those tickets can pass the gate in Fortress.

2.Refund a ticket, wait depending of Schedule synchronization ticket, check that it cannot pass the gate in Fortress.

In case it where not working, check the error logs in the executions and work out until the tickets are accepted/are refused at the gates.

How can I validate that External Printing Interface is working properly?

  1. Sell a season ticket mapped to Fortress and print it on the Fortress printer. It must be printed by the Fortress printer (check in the execution logs for errors if it does not print)
  2. Add an additional match on this season ticket, wait depending of Schedule synchronization ticket and see if the ticket can pass the gate (it should). If it does not pass, check in the access control logs to find the error.

Is it possible to purchase by unnumbered seats?

Yes, it is possible to add in the configuration an "unnumbered seat area", and when purchasing the ticket select this area tickets.

Fortress Training Session 1 -  

Fortress Support:

support@fortressgb.com

+44 (0) 845 299 6020