# Writeback in Plan

Plan supports writing back and exporting planning data to multiple destination types, including file-based destinations, data warehouses, and data lake storage. It writes back forecasts, scenario models, and user inputs to backend destinations.

Unlike conventional BI and planning tools that require predefined database schemas and IT-managed writeback infrastructure, Plan supports dynamic database configuration and runtime table creation. Writeback structures are generated automatically based on planning context. Plan also supports semi-structured, on-the-fly writebacks and can write to multiple destinations simultaneously.

This article covers writeback, adding a destination, performing writeback, and logs.

### Start writeback

To access writeback options and start writeback, select the **Writeback** tab.&#x20;

<figure><img src="/files/K3jHX9pHLS7YM6q4VjeV" alt=""><figcaption></figcaption></figure>

The **Writeback** tab includes:

* **Writeback**: Execute writeback.
* **Destination**: Add and manage writeback destinations.
* **Data**: Customize data-related options for writeback.
* **Logs**: View detailed information for each writeback event.
* **General:** Configure writeback-related settings.

### Add destination

Add one or more destinations to save data using Writeback.

<figure><img src="/files/UtuLNdn5GYEcs1Pcj2bD" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
On-premises database servers must be directly reachable from the internet for writeback. They must have a public IP address with port forwarding.
{% endhint %}

Data writeback capabilities are subject to specific row limits depending on the file source or destination used. While local file formats such as Excel and CSV support a significant volume of up to 200,000 rows, cloud-based integrations via OneDrive and SharePoint are restricted to a much smaller capacity of only 250 rows.

### Perform writeback

1. Go to the **Writeback** tab, and then select **Add Destination**.

<figure><img src="/files/ue8bR1neQmF5Ty6oAWuy" alt=""><figcaption></figcaption></figure>

2\. In the **Create Destination** dialog, select **+ New** next to **Select a Connection** to create a new connection, or choose dropdown to select an existing connection.

<figure><img src="/files/xyEzpz1eGt4RPfIlqz1Z" alt=""><figcaption></figcaption></figure>

3. After selecting the connection, provide the required details:

* **Database Name**: Select the target database.
  * In the **Select destination database** dialog, browse and select the required database from the **OneLake catalog.**

<figure><img src="/files/NnPWZsB1FoBZyKzS6sEc" alt=""><figcaption></figcaption></figure>

* **Schema**: Specify the schema (for example, **dbo**).
* **Table Name**: Enter the name of the writeback table.
* **Decimal Precision**: Specify the number of digits after the decimal point for numeric columns.

{% hint style="info" %}
**Important:** This is a one-time setting and cannot be changed later.
{% endhint %}

* **Text Length**: Define the maximum length for string columns (for example, **Length of all string columns = 512**) or choose **Custom**.

After configuring all required fields, select **Add** to create the destination.

4\. After you configure all required fields, select **Add** to create the destination. The **SQL database destination** is now configured and ready for writeback.

<figure><img src="/files/MszhYxurF1DUoNWqIJvb" alt=""><figcaption></figcaption></figure>

5\. Select **Writeback** to write your data table. A notification shows the writeback status.

<figure><img src="/files/RR77pvK4T9CdvaCaArpa" alt=""><figcaption></figcaption></figure>

After completion, a confirmation message is displayed.

<figure><img src="/files/ggg0PcrLMYrsELQ1dvxD" alt=""><figcaption></figcaption></figure>

You can view the written data in the destination database.

<figure><img src="/files/Yq3O8keAQBmgYRUNU8tW" alt=""><figcaption></figcaption></figure>

6\. After the initial writeback, you may add or remove row or column dimensions as you build your report. If the destination structure must change because of these updates, a notification appears. You can drop and recreate the table with the updated structure before the next writeback.

<figure><img src="/files/pJwhCkqWIIUOnTGvjerG" alt=""><figcaption></figcaption></figure>

### Logs

Select **View Logs** to open the writeback log console. Logs include **milestones**, **payload size**, and **writeback duration**.

<figure><img src="/files/QbvmW73noZSgVHDltk4J" alt=""><figcaption></figcaption></figure>

Select a writeback **ID** to view detailed information.

<figure><img src="/files/PLYMO1EeziliAG9dY8fd" alt=""><figcaption></figcaption></figure>


---

# Agent Instructions: 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:

```
GET https://docs.fabricplan.com/planning-sheets/how-tos/persist-planning-data-using-writeback/writeback-in-plan.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
