> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.kodelabs.com/llms.txt
> Use this file to discover all available pages before exploring further.

# CF Connect

> Connect CF Connect to KODE OS for work orders data

> Connect CF Connect to KODE OS for work orders data integration

## Overview

Use this integration to connect CF Connect to KODE OS for work orders tied to your Salesforce-connected environment. You can collect sensor and non-sensor data with hybrid historical collection and use supported actions from Data Sources.

| Property            | Value                |
| ------------------- | -------------------- |
| **System Type**     | Work Orders          |
| **Communication**   | REST                 |
| **Collection**      | Hybrid (Pull + Push) |
| **Collection Mode** | HISTORICAL           |
| **Actions**         | Supported            |

## Supported Capabilities

* Collect Sensor Data
* Collect Non-Sensor Data

## Prerequisites

To integrate with the CF Connect API, ensure you have the following details:

* An active account in [https://cf--uat.sandbox.my.salesforce.com](https://cf--uat.sandbox.my.salesforce.com) with the appropriate access permissions.
* You will need to obtain a prod link here ⬆️
* Valid username and password credentials for CF Salesforce platform.

## Generate API Credentials

Obtain Credentials	4

* Go to the CF Salesforce App
* Sign in using your username and password.
* Click the settings button (⚙️) in the top navigation bar (upper right corner) and select Setup.
* Navigate to the Apps > External Client Apps > External Client App Manager tab.
* Click the New External Client App button on the right upper side.
* Enter the basic information:
* External Client App Name
* Contact Email
* API Name
* Select the Distribution State
* Under API (Enable OAuth Settings) check option Enable OAuth ✔️
* Under App Settings provide the Callback URL [https://www.test.salesforce.com/oauth2/callback](https://www.test.salesforce.com/oauth2/callback)
* Under OAuth Scopes select your options, i.e
* Manage user data via APIs (api)
* Manage user data via Web browsers (web)
* Full access (full)
* Under Flow Enablement check options
* Enable Client Credentials Flow ✔️
* Enable Authorization Code and Credentials Flow ✔️
* Under Security check options
* Require secret for Web Server Flow ✔️
* Require secret for Refresh Token Flow ✔️
* Finally, click on Create ✔️
  Steps to Obtain Credentials
* Click on the external app created in the previous step
* Select the Settings tab
* Under OAuth Settings > App Settings click on button Consumer Key and Secret
  After completing the steps above, your Consumer Key and Consumer Secret will be used in the next step. ⬇️

## Configure Connector in KODE OS

1. Navigate to **Data Sources** in your building
2. Click **API Catalog** and search for **CF Connect**
3. Click **+ Add Datasource**
4. Complete the three-page setup flow using the credential prerequisites for this integration

<Note>
  Connector field metadata is not exposed in code for this integration. Configure the connector using your standard credentials and endpoint details shown in the prerequisites and vendor onboarding references.
</Note>

## What Data You Get

### Work Orders

Maintenance and service requests including title, description, status, priority, assignee, due dates, vendor response, resolution details, and cost estimates

KODE OS maps CF Connect data to these standard fields:

| KODE Field          | Source Field      | Notes                |
| ------------------- | ----------------- | -------------------- |
| **id**              | `id`              | --                   |
| **title**           | `title`           | --                   |
| **description**     | `description`     | --                   |
| **status**          | `status`          | --                   |
| **priority**        | `priority`        | --                   |
| **category**        | `category`        | --                   |
| **subCategory**     | `subCategory`     | --                   |
| **location**        | `location`        | --                   |
| **createdBy**       | `createdBy.name`  | transformed          |
| **assignedTo**      | `assignedTo`      | --                   |
| **createdAt**       | `createdAt`       | transformed          |
| **updatedAt**       | `updatedAt`       | transformed          |
| **startedAt**       | `startedAt`       | transformed          |
| **completedAt**     | `completedAt`     | transformed          |
| **duration**        | `completionTime`  | --                   |
| **serviceProvider** | `serviceProvider` | --                   |
| **lastComment**     | `lastComment`     | --                   |
| **externalUrl**     | `attributes`      | transformed          |
| **problemCause**    | `problemCause`    | --                   |
| **customFields**    | `(custom fields)` | custom fields object |
| **id**              | `id`              | --                   |
| **title**           | `title`           | --                   |
| **description**     | `description`     | --                   |
| **status**          | `status`          | --                   |
| **priority**        | `priority`        | --                   |
| **category**        | `category`        | --                   |
| **subCategory**     | `subCategory`     | --                   |
| **location**        | `location`        | --                   |
| **createdBy**       | `createdBy.name`  | transformed          |
| **createdAt**       | `createdAt`       | transformed          |
| **updatedAt**       | `updatedAt`       | transformed          |
| **dueDate**         | `dueDate`         | transformed          |
| **startedAt**       | `startedAt`       | transformed          |
| **completedAt**     | `completedAt`     | transformed          |
| **duration**        | `completionTime`  | --                   |
| **lastComment**     | `lastComment`     | --                   |
| **externalUrl**     | `attributes`      | transformed          |
| **problemCause**    | `problemCause`    | --                   |
| **customFields**    | `(custom fields)` | custom fields object |

### Polling Schedule

* **WorkOrder** -- Default polling: 15 minutes (min: 15 minutes, max: 1 hours)

For more details on collection modes, see the [Data Collection guide](/products/integrations/capabilities/data-collection).

## Available Actions

### Create Case

**Type:** Write

Creates a new support case in CF Connect

| Field                | Type   | Required | Input     | Options / Default                          |
| -------------------- | ------ | -------- | --------- | ------------------------------------------ |
| **Title**            | STRING | Yes      | Text Area | --                                         |
| **Description**      | STRING | Yes      | Text Area | --                                         |
| **Ticket Type**      | STRING | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Priority**         | STRING | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Category**         | STRING | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Sub Category**     | STRING | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Location**         | STRING | Yes      | Drop Down | Dynamic: fetched from CF Connect locations |
| **Service Provider** | STRING | No       | Text Box  | --                                         |

#### Example Request

```json theme={null}
{
  "title": "example-value",
  "description": "example-value",
  "location": "example-value",
  "ticketType": "example-value",
  "priority": "High"
}
```

#### Expected Result

* KODE OS sends the action to the external API using the configured connector credentials
* The external system returns success (typically HTTP 2xx) and processes the requested operation

### Create Work Order

**Type:** Write

Creates a new work order linked to a case in CF Connect

| Field                | Type   | Required | Input     | Options / Default                          |
| -------------------- | ------ | -------- | --------- | ------------------------------------------ |
| **Title**            | STRING | Yes      | Text Area | --                                         |
| **Description**      | STRING | Yes      | Text Area | --                                         |
| **Priority**         | STRING | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Service Provider** | STRING | No       | Text Box  | --                                         |
| **Case**             | STRING | Yes      | Drop Down | Dynamic: fetched from CF Connect cases     |

#### Example Request

```json theme={null}
{
  "title": "example-value",
  "description": "example-value",
  "caseId": "12345",
  "priority": "High",
  "serviceProvider": "12345"
}
```

#### Expected Result

* KODE OS sends the action to the external API using the configured connector credentials
* The external system returns success (typically HTTP 2xx) and processes the requested operation

### Update Case

**Type:** Write

Updates an existing case in CF Connect

| Field                | Type       | Required | Input     | Options / Default                          |
| -------------------- | ---------- | -------- | --------- | ------------------------------------------ |
| **Title**            | STRING     | No       | Text Area | --                                         |
| **Description**      | STRING     | No       | Text Area | --                                         |
| **Priority**         | STRING     | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Category**         | STRING     | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Sub Category**     | STRING     | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Status**           | STRING     | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Location**         | STRING     | No       | Drop Down | Dynamic: fetched from CF Connect locations |
| **Start Date**       | DATE\_TIME | No       | Text Box  | --                                         |
| **Service Provider** | STRING     | No       | Text Box  | --                                         |
| **Comment**          | STRING     | No       | Text Area | --                                         |

#### Example Request

```json theme={null}
{
  "title": "example-value",
  "description": "example-value"
}
```

#### Expected Result

* KODE OS sends the action to the external API using the configured connector credentials
* The external system returns success (typically HTTP 2xx) and processes the requested operation

### Update Work Order

**Type:** Write

Updates an existing work order in CF Connect

| Field                | Type       | Required | Input     | Options / Default                          |
| -------------------- | ---------- | -------- | --------- | ------------------------------------------ |
| **Title**            | STRING     | No       | Text Area | --                                         |
| **Description**      | STRING     | No       | Text Area | --                                         |
| **Priority**         | STRING     | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Status**           | STRING     | No       | Drop Down | Dynamic: fetched from CF Connect picklists |
| **Start Date**       | DATE\_TIME | No       | Text Box  | --                                         |
| **Due Date**         | DATE\_TIME | No       | Text Box  | --                                         |
| **Service Provider** | STRING     | No       | Text Box  | --                                         |
| **Comment**          | STRING     | No       | Text Area | --                                         |

#### Example Request

```json theme={null}
{
  "title": "example-value",
  "description": "example-value"
}
```

#### Expected Result

* KODE OS sends the action to the external API using the configured connector credentials
* The external system returns success (typically HTTP 2xx) and processes the requested operation

For more details on how actions work, see the [Actions guide](/products/integrations/capabilities/actions).

## Use Cases

Once connected, this integration enables you to:

* Centralize maintenance requests and work order status from facility management systems
* Create and update work orders directly from KODE OS when issues are detected
* Track maintenance KPIs including response time, completion rate, and cost

## Troubleshooting

<AccordionGroup>
  <Accordion title="Authentication or connection error">
    Verify that the credentials are correct and have not expired. Check that the URL is reachable from the KODE OS environment. Double-check all credential fields match the values from the CF Connect platform.
  </Accordion>

  <Accordion title="Data collection stops or gaps appear">
    Check the connector status on the Data Sources page. If the status shows an error, review the error logs on the connector detail page. Common causes include expired credentials, network changes, or rate limiting by the CF Connect API.
  </Accordion>
</AccordionGroup>
