> For the complete documentation index, see [llms.txt](https://docs.buildings.ability.abb/collection/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.buildings.ability.abb/collection/mandatory-base/platform-core/connect-hub/data-processing-function-formats.md).

# Data processing (Function/Formats)

Incoming data must be mapped before BuildingPro Suites can store it on the correct asset and attribute. This is done with **formats** and, if needed, **functions**.

## What formats are for

A **format** defines how incoming payload data is assigned to asset data in BuildingPro Suites.

Use a format to:

* map payload values to specific asset attributes
* identify which asset should receive the data
* define whether the identifier comes from the payload or the topic
* define how the timestamp is detected
* use paths such as **JSONPath** to select values from structured payloads
* use **MQTT wildcards** when the asset identifier is part of the topic

In simple terms, a format answers this question:

> **Which incoming value belongs to which asset attribute?**

{% hint style="success" %}
Create new formats while configuring a connection whenever possible. This is the recommended workflow.
{% endhint %}

{% hint style="warning" %}
Use the **Formats** menu mainly to review and edit existing formats.
{% endhint %}

## What functions are for

A **function** is used when a format alone is not enough.

Use a function to:

* calculate new values from incoming data
* convert or normalize values before they are stored
* combine multiple payload fields into one identifier
* restructure incoming data for mapping
* apply custom logic that cannot be expressed with the format configuration alone

In simple terms, a function answers this question:

> **How should the incoming data be transformed before it is assigned?**

## How formats and functions work together

Formats and functions are often used together:

1. A connection receives data.
2. The format identifies the target asset and maps payload fields to attributes.
3. An attached function can transform or enrich the data when needed.

This is especially useful when:

* the payload does not contain a ready-to-use identifier
* values must be combined, cleaned, or converted
* the relevant asset must be derived from topic parts or nested JSON fields

## Related pages

* [Configure a Encoder/Decoder Format](/collection/mandatory-base/platform-core/connect-hub/data-processing-function-formats/configure-a-format.md)
* [Functions](/collection/mandatory-base/platform-core/connect-hub/data-processing-function-formats/functions.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.buildings.ability.abb/collection/mandatory-base/platform-core/connect-hub/data-processing-function-formats.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
