CRM integration reference architecture

Integrating your CRM system with S-360

Schema

You are the owner/maintainer of a CRM system (named ExtCRM in the following lines) and you want to integrate it with the S-360 instance having the following institution code: myvenue.

We expect this integration to provide the following features:

  1. Synchronisation of contact data from S-360 to ExtCRM

→ if a contact is created/updated in S-360, we want the modification to be pushed to ExtCRM. In S-360 a contact represents either a person or a company.

  1. Synchronisation of contact data from ExtCRM to S-360

→ if a contact is created/updated in ExtCRM, we want the modification to be pushed to S-360.

  1. Synchronisation of order data from S-360 to ExtCRM

→ if an order is finalized (closed or abandonned) in S-360, we want the content of the order to be pushed to ExtCRM. In S-360 an order represents a transaction between a contact and the institution. This transaction can be a sale, a refund, an option, a reservation...

  1. (Optional) creation of bookings from ExtCRM in S-360.

→ The ExtCRM operator wants to create an offer (sales or reservation) in the ticketing system.

The following document indicates how to activate the integration between ExtCRM and S-360, using S-360 standard mechanisms for all of the four streams described above.

Non-functional aspects

Data pushed from S-360 are synced every 15 minutes.

Data updates from ExtCRM to S-360 through S-360's APIs must comply with API rate limits.

If you plan to synchronize loads of data from ExtCRM please check with S-360's platform team to validate your load scenarios.

Pre-requisites

URLs to push data from S-360 to ExtCRM

ExtCRM provides 2 urls to which data will be POSTed from S-360.

  • Contact synchronization URL. Example: http://extcrm.com/s360/contacts/myvenue
  • Orders synchronization URL. Example: http://extcrm.com/s360/orders/myvenue

Take note that, in the examples above, ExtCRM provides a different URL for each of the data streams (contacts, orders, access control checks). The URL also includes mention of the institution code (myvenue) of the S-360 instance.

That design easly allows to integrate ExtCRM with other S-360 instances using different institution codes.

All those URL must accept an array of JSON objects. If the payload is accepted, the URL must answer by a 200. If it is not accepted, it must answer with a different code. In that case, the same payload will be retried at the next call.

Authentication mechanism to push data from S-360 to ExtCRM

ExtCRM must provide the authentication mechanism for the URLs defined above.

S-360 supports the following authentication mechanisms when pushing data to remove systems:

  • No authentication,
  • Basic authentication,
  • API Key

URLs to change data in S-360 from ExtCRM

The domain and subdomain of the urls to call the webservices will be:

Where myvenue is the institution code of the S-360 instance.

Webservices protocols and authentication

Please refer to that page

1. Contacts stream from S-360 to ExtCRM

The contact stream is put in place using S-360 contact webhook mechanism.

Please follow that link to discover the structure of the contact payload and explore the options of that mechanism: Contact webhook

New contacts will be pushed every 15 minutes, with a maximum of 500 contacts at every execution and a maximum of 50 contacts per payload.

2. Contacts stream from ExtCRM to S-360

This stream is using the contact public APIs of S-360.

Please refer to that page for more information: Contact API

3. Orders stream

The order stream is put in place using S-360 order webhook mechanism.

Please follow that link to discover the structure of the orders payload and explore the options of that mechanism: Order webhook

Finalized orders will be pushed every 15 minutes, with a maximum of 500 contacts at every execution and a maximum of 50 orders per payload.

4. Creating bookings in S-360

This stream is using the orders public APIs of S-360.

Please refer to that page for more information: Contact API

This API can be used to (open orders, create sales or simple reservations](/backend/sales).

First time synchronization

Once the data flow is set up and tested, please determine, in accordance with the operators of myvenue the depth of past data to be retrieved: the date of the oldest dara to be retrieved.

Example: 01/01/2019

Which means that contacts updated before that date, orders created before that date will not be pushed to ExtCRM

S-360 team will do the appropriate set-up to synchronize those data.

Other technical approaches

Other technical approaches which necessitates developments or services on S-360's side are explored in that document. Possible architectures for CRM integrations