Skip to main content

Check out Port for yourselfย 

Ingest HiBob data into Port via Airbyte, S3 & webhook

This guide will demonstrate how to ingest HiBob data into Port using Airbyte, S3 and a webhook integration.

Prerequisitesโ€‹

  • Ensure you have a Port account and have completed the onboarding process.

  • This feature is part of Port's limited-access offering. To obtain the required S3 bucket, please contact our team directly via Intercom, Slack, or e-mail, and we will create and manage the bucket on your behalf.

  • Access to an available Airbyte app (can be cloud or self-hosted) - for reference, follow the quick start guide.

  • Setup a Hibob API service user - Hibob Guide.

Data model setupโ€‹

Create blueprintsโ€‹

Create the Hibob Payroll blueprint:

  1. Go to the Builder page of your portal.

  2. Click on "+ Blueprint".

  3. Click on the {...} button in the top right corner, and choose "Edit JSON".

  4. Paste the following JSON schema into the editor:

Hibob Payroll (Click to expand)
{
"identifier": "hibob_payroll",
"description": "Represents an employee record.",
"title": "Hibob Payroll",
"icon": "Service",
"schema": {
"properties": {
"creationdate": {
"type": "string",
"format": "date-time"
},
"firstname": {
"type": "string"
},
"avatarurl": {
"type": "string",
"format": "url"
},
"companyid": {
"type": "string"
},
"surname": {
"type": "string"
},
"state": {
"type": "string"
},
"email": {
"type": "string",
"format": "email"
},
"creationdatetime": {
"type": "string",
"format": "date-time"
},
"coverimageurl": {
"type": "string",
"format": "url"
},
"fullname": {
"type": "string"
}
},
"required": []
},
"mirrorProperties": {},
"calculationProperties": {},
"aggregationProperties": {},
"relations": {}
}

Create the Hibob Profile blueprint in the same way:

Hibob Profile (Click to expand)
{
"identifier": "hibob_profile",
"description": "Represents an employee record.",
"title": "Hibob Profile",
"icon": "User",
"schema": {
"properties": {
"companyid": {
"type": "string"
},
"firstname": {
"type": "string"
},
"surname": {
"type": "string"
},
"email": {
"type": "string",
"format": "email"
},
"is_manager": {
"type": "boolean",
"title": "is_manager"
},
"duration_of_employment": {
"type": "string",
"title": "duration_of_employment"
}
},
"required": []
},
"mirrorProperties": {},
"calculationProperties": {},
"aggregationProperties": {},
"relations": {
"payroll": {
"title": "Payroll",
"target": "hibob_payroll",
"required": false,
"many": false
}
}
}

Create Webhook Integrationโ€‹

Create a webhook integration to ingest the data into Port:

  1. Go to the Data sources page of your portal.

  2. Click on "+ Data source".

  3. In the top selection bar, click on Webhook, then select Custom Integration.

  4. Enter a name for your Integration (for example: "Hibob Integration"), enter a description (optional), then click on Next.

  5. Copy the Webhook URL that was generated and include set up the airbyte connection (see Below).

  6. Scroll down to the section titled "Map the data from the external system into Port" and paste the following mapping:

Hibob Webhook Mapping (Click to expand)
[
{
"blueprint": "hibob_payroll",
"operation": "create",
"filter": "(.body | has(\"_PORT_SOURCE_OBJECT_KEY\")) and (.body._PORT_SOURCE_OBJECT_KEY | split(\"/\") | .[2] | IN(\"payroll\"))",
"entity": {
"identifier": ".body.id",
"title": ".body.displayName",
"properties": {
"creationdate": "(.body.creationDate? // null) | if type == \"string\" then strptime(\"%Y-%m-%d\") | strftime(\"%Y-%m-%dT%H:%M:%SZ\") else null end",
"firstname": ".body.firstName",
"avatarurl": ".body.avatarUrl",
"companyid": ".body.companyId",
"surname": ".body.surname",
"state": ".body.state",
"email": ".body.email",
"creationdatetime": ".body.creationDatetime",
"coverimageurl": ".body.coverImageUrl",
"fullname": ".body.fullName"
}
}
},
{
"blueprint": "hibob_profile",
"operation": "create",
"filter": "(.body | has(\"_PORT_SOURCE_OBJECT_KEY\")) and (.body._PORT_SOURCE_OBJECT_KEY | split(\"/\") | .[2] | IN(\"profiles\"))",
"entity": {
"identifier": ".body.id",
"title": ".body.displayName",
"properties": {
"companyid": ".body.companyId",
"firstname": ".body.firstName",
"is_manager": ".body.work.isManager",
"duration_of_employment": ".body.work.durationOfEmployment.humanize",
"surname": ".body.surname",
"email": ".body.email"
},
"relations": {
"payroll": ".body.id"
}
}
}
]

Airbyte Setupโ€‹

Set up S3 Destinationโ€‹

If you haven't already set up S3 Destination for Port S3, follow these steps:

  1. Login to your Airbyte application (cloud or self-hosted).

  2. In the left-side pane, click on Destinations.

  3. Click on + New Destination.

  4. Input the S3 Credentials provided to you by Port:

    • Under S3 Key ID enter your S3 Access Key ID.
    • Under S3 Access Key enter your S3 Access Key Secret.
    • Under S3 Bucket Name enter the bucket name (example: "org-xxx").
    • Under S3 Bucket Path enter "/data".
    • Under S3 Bucket Region enter the appropriate region.
    • For output format, choose "JSON Lines: Newline-delimited JSON".
    • For compression, choose "GZIP".
    • Under Optional Fields, enter the following in S3 Path Format: ${NAMESPACE}/${STREAM_NAME}/year=${YEAR}/month=${MONTH}/${DAY}_${EPOCH}_
  5. Click Test and save and wait for Airbyte to confirm the Destination is set up correctly.

Set up Hibob Connectionโ€‹

  1. Follow Airbyte's guide to set up Hibob connector.

  2. After the Source is set up, proceed to create a "+ New Connection".

  3. For Source, choose the Hibob source you have set up.

  4. For Destination, choose the S3 Destination you have set up.

  5. In the Select Streams step, make sure only "payroll" and "profiles" are marked for synchronization.

  6. In the Configuration step, under Destination Namespace, choose "Custom Format" and enter the Webhook URL you have copied when setting up the webhook, for example: "wSLvwtI1LFwQzXXX".

  7. Click on Finish & Sync to apply and start the Integration process!

Important

If for any reason you have entered different values than the ones specified in this guide, inform us so we can assist to ensure the integration will run smoothly.