> For the complete documentation index, see [llms.txt](https://docs.omnata.com/omnata-product-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.omnata.com/omnata-product-documentation/omnata-sync-for-snowflake/apps/ms-excel/release-history.md).

# Release History

***

### V2.1

#### Created: 2026-06-22

Add daily billing events so the plugin is billable MicrosoftExcelPlugin never overrode create\_billing\_events, so it inherited the OmnataPlugin default that returns an empty list. The Sync Engine's nightly CREATE\_BILLING\_EVENTS task therefore produced no charges for this plugin.

* Override create\_billing\_events to emit Omnata's standard daily events via omnata\_standard\_billing\_events(): DAILY\_ACTIVE\_INITIAL for the first billable connection-direction and DAILY\_ACTIVE\_ADDITIONAL for each subsequent one, at $2.00 each.
* Add INITIAL\_CHARGE/ADDITIONAL\_CHARGE Decimal constants and import BillingEventRequest/SnowflakeBillingEvent and Decimal.
* Add src/tier.txt set to "standard"; the engine does not bill (and emits no events for) plugins on the "byo" tier, so this is required for the override to take effect.
* Add CONTEXT.md glossary documenting the billing terms and the tier -> billing-suppression interaction.
* Added billing events

***

### V2.0

#### Created: 2026-06-16

* Reordered inbound form fields
* Added primary key columns and incremental sync for multi-file individual mode
* Removed markdown formatting from file match preview
* Fixed incremental sync for multi-file individual mode
* Restored incremental sync support for multi-file consolidated mode
* Now using last\_modified timestamp cursor for consolidated incremental sync
* Advanced consolidated cursor to live max last\_modified after full refresh
* Emitted cursor state update immediately after each file completes
* Removed unnecessary live folder scan after full refresh
* Fixed ValueError in header preview when parent\_folder\_url param not yet initialised
* The new connection flow will now be used

***

### V1.5

#### Created: 2026-05-08

* Improved OAuth2 error handling
* Support more SharePoint URL formats for inbound sync
* Surface Azure AD error descriptions (e.g. AADSTS7000215) instead of generic HTTPError.
* Use Field Mapping order to preserve original column order in outbound sync
* Added multi-file sync inbound mode
* Added a new sync mode where each matched file in a folder becomes its own stream/table, extracting the first visible worksheet. Existing modes are renamed to 'Single File' and 'Multi-file Append'
* Added header\_row sync parameter with form preview
* Support Sites.Selected permission model

***

### V1.4

#### Created: 2026-02-27

* Improve OAuth2 error handling in get\_access\_token().
* Surface Azure AD error descriptions (e.g. AADSTS7000215) instead of generic HTTPError. Logs error via logger.error for Datadog visibility.
* Only extracts known-safe fields (error\_description, error) to avoid logging sensitive data.

***

### V1.3

#### Created: 2026-02-12

* Added an information field to the config form that previews Excel files matching the provided filename regex
* Add CSV support to Excel plugin

***

### V1.2

#### Created: 2026-01-21

* Improved multi-file handling for inbound syncs

***

### V1.1

#### Created: 2026-01-13

* When selecting inbound files to sync, the plugin now uses URLs to choose the file/folder rather than searching the whole site

***

### V1.0

#### Created: 2025-12-23

* Initial release

***


---

# 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.omnata.com/omnata-product-documentation/omnata-sync-for-snowflake/apps/ms-excel/release-history.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.
