# Integration Check List

{% hint style="info" %}
In addition to checking the below, please review the [integration best practices](https://docs.locoia.com/best-practice-guides/integration-best-practices-and-considerations-before-starting).
{% endhint %}

### Check list before an integration

* [ ] Is the system you like to integrate present on our platform?
  * [ ] If not, please provide the following information:
    * Does the system provide a rest API or SOAP web service?
    * Is a Swagger file / OpenAPI documentation available?
    * Which endpoints / functions need to be used?
    * Optional: Does the system provide export functionality?
    * Optional: Does the system provide database access e.g. via ODBC?
    * Optional: Who can be consulted on technical issues?
* [ ] Are test or staging **systems available**?
* [ ] **Test data should be prepared** for the first instance but also for testing later changes
* [ ] Authentications: Are all API keys or username and password at hand? If restricted role-based access is available, this should be agreed upon and configured
* [ ] Is the service publicly available, or are firewalls present that require **IP-white listing**?
  * For **firewalls**, VPN access needs to be granted
  * Our static IP needs to be requested via a [support ticket](https://dynamicinsight.freshdesk.com/support/tickets/new) and white-labeled on the other systems
* [ ] Consider all data privacy and GDPR / DSGVO requirements, e.g., deletion requirements, etc.
* [ ] Synchronization technical aspects
  * **Execution frequency** - Real-time vs. e.g., daily sync (see also Webhooks for real-time syncs)
  * **Webhooks** - Are webhooks available?&#x20;
    * Can these be [registered programmatically (via the API)](https://docs.locoia.com/connectors/webhook-trigger-for-connectors) or do they have to be [registered manually in the UI](https://docs.locoia.com/connectors/helpers/webhook-helper)?
    * Does the platform support multiple webhooks?
    * Are the required events available?
  * **Object mapping** - Sometimes, objects don't map 1:1, and on one system, one object can be represented in two objects on the other system. This has implications on the integration flow
  * **Field mappings** - Please request our Google sheet template as an ideal basis
  * **Custom fields** - If one system allows [custom fields](https://docs.locoia.com/automation/flow-builder/connectors-and-apis/custom-data-fields), how are they handled in the other system? Can they be added by users easily, and how should the integration handle unexpected new custom fields?
  * **Data model relations** - through what unique / foreign keys are objects connected?
  * **Validation** - Do the systems provide validation of data (length, some characters only, ...), and how are they enforced? If they are not enforced, there are several ways, e.g. the `replace('#', '')` [Jinja-function](https://docs.locoia.com/automation/flow-builder/jinja2-template-language) to do this on our side.
  * **Pagination** - For large data sets, how is pagination taken care of to [loop over lists](https://docs.locoia.com/connectors/helpers/loop-helper)?
  * **Filtering** - Can views, lists, or collections be filtered via the API?
  * **Sorting** - Can views, lists, or collections be sorted via the API?
  * Transformation of data,...
    * e.g., one system uses UTC-timestamps, the other German timestamps; how is the transformation done?
    * One system uses EUR and USD as currencies, the other currency symbols $ € - how is the mapping done?
    * Select drop-down fields: Where are the options stored? What if a new option is generated (e.g., it is easy to generate new options in Salesforce)? Should a default value be used or an error be thrown?
    * ...
* [ ] Who gets [error messages](https://docs.locoia.com/embed-white-label-portal/embed-admin-setup/flow-building/error-handling) if an integration run fails?
* [ ] Once records are - **created, updated, or deleted** - on one system, what should happen on the respective other system?
