# Historian SDK API Changes in Ignition 8.3.3

**URL:** <https://forum.inductiveautomation.com/t/historian-sdk-api-changes-in-ignition-8-3-3/112926>\
**Category:** Module Development\
**Created:** [December 20, 2025, 12:24am UTC](https://forum.inductiveautomation.com/t/historian-sdk-api-changes-in-ignition-8-3-3/112926 "2025-12-20T00:24:12Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Kurt.Larson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kurt.larson/32/6426_2.png) [@Kurt.Larson](https://forum.inductiveautomation.com/u/Kurt.Larson)\
**Post date:** [December 20, 2025, 12:24am UTC](https://forum.inductiveautomation.com/t/historian-sdk-api-changes-in-ignition-8-3-3/112926/1 "2025-12-20T00:24:12Z")

</div>

### Overview

Starting in **Ignition 8.3.3** , the Historian gateway API has been isolated into a dedicated `historian-gateway-api` module internally. This separation decouples the public SDK APIs from the internal implementation, providing a cleaner dependency surface for third-party module development.

* * *

### What Module Authors Need to Know

#### 1. SDK Dependency Name Unchanged

The SDK artifact name remains the same:

```kotlin
compileOnly("com.inductiveautomation.ignitionsdk:historian-gateway:8.3.X")

```

No changes required to your Gradle dependency declarations. The internal reorganization is transparent at the SDK artifact level.

* * *

#### 2. Package Imports Remain Unchanged

The class packages have not changed. All API classes remain in:

```python
  - com.inductiveautomation.historian.gateway.api.*
  - com.inductiveautomation.historian.gateway.api.config.*
  - com.inductiveautomation.historian.gateway.api.query.*
  - com.inductiveautomation.historian.gateway.api.storage.*
  - com.inductiveautomation.historian.gateway.legacy.*
  - com.inductiveautomation.historian.gateway.interop.*
  - com.inductiveautomation.historian.gateway.util.*

```

* * *

#### 3. TagHistoryProvider Changes (Breaking)

If you implement `TagHistoryProvider<S>`, the default `getStorageEngine()` method has been removed. You have two options:

Option A: Extend `LegacyTagHistoryProviderAdapter` (Recommended)

A new abstract adapter class handles storage engine management automatically:

```java
  public class MyHistorian extends LegacyTagHistoryProviderAdapter<MySettings> {

      public MyHistorian(GatewayContext context, String historianName) {
          super(context, historianName);
      }

      // Implement TagHistoryQueryInterface methods...
      // getStorageEngine() is automatically provided by the adapter
  }

```

Option B: Implement `getStorageEngine()` manually

If you need custom storage engine behavior:

```java
  @Override
  public Optional<StorageEngine> getStorageEngine() {
      return Optional.of(
          TagHistoryStorageEngineBridge.getOrCreate(context, getName())
      );
  }

```

* * *

#### 4. New Helper Classes

`HistorianModule` - Abstract base class for gateway module hooks that provide historian functionality. Use `HistorianModule.get(context)` to retrieve the instance and access the `HistorianManager`:

```java
  HistorianManager manager = HistorianModule.get(context).getHistorianManager();

```

`LegacyTagHistoryProviderAdapter<S>` - Abstract base class for legacy historian implementations. Automatically creates and manages a `TagHistoryStorageEngineBridge` for Store and Forward integration. Extend this class instead of implementing `TagHistoryProvider` directly.

`HistorianUtilities` - Static utility methods for converting between legacy and modern query formats, managing query flags, and other common historian operations.

* * *

#### 5. Kotlin to Java Conversion

Some classes were converted from Kotlin to Java:

| Class | Change |
| --- | --- |
| `HistorianProvider` | Now a Java record instead of Kotlin class |
| `HistorianExtensionPoint` | Now a Java abstract class instead of Kotlin abstract class |

The API signatures remain compatible, but if you were using Kotlin-specific interop features, you may need to adjust.

* * *

### Migration Checklist

- If implementing `TagHistoryProvider`, either extend `LegacyTagHistoryProviderAdapter` or implement `getStorageEngine()` explicitly
- Rebuild and test your module against Ignition 8.3.3+

* * *

If you have questions, please reply to this thread.

---

<div class="post-metadata">

**Author:** ![Eden.Mar](https://avatars.discourse-cdn.com/v4/letter/e/35a633/32.png) [@Eden.Mar](https://forum.inductiveautomation.com/u/Eden.Mar)\
**Post date:** [January 12, 2026, 7:12pm UTC](https://forum.inductiveautomation.com/t/historian-sdk-api-changes-in-ignition-8-3-3/112926/2 "2026-01-12T19:12:33Z")

</div>

Hi Kurt, I tried using the 8.3.3-rc1 library and it looks like I lose access to some of the previous legacy classes. Where is HistorianProviderRecord now? I’m using Gradle, and my toml definition looks like

```python
historian-gateway-api = {module = "com.inductiveautomation.ignitionsdk:historian-gateway", version.ref = "historian-api"}

```

---

<div class="post-metadata">

**Author:** ![Kurt.Larson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kurt.larson/32/6426_2.png) [@Kurt.Larson](https://forum.inductiveautomation.com/u/Kurt.Larson)\
**Post date:** [January 12, 2026, 11:18pm UTC](https://forum.inductiveautomation.com/t/historian-sdk-api-changes-in-ignition-8-3-3/112926/3 "2026-01-12T23:18:16Z")

</div>

Unfortunately, it looks like this file wasn't relocated into the `historian-gateway-api` module. I'll get this fixed ASAP. Thanks.

---

<div class="post-metadata">

**Author:** ![Eden.Mar](https://avatars.discourse-cdn.com/v4/letter/e/35a633/32.png) [@Eden.Mar](https://forum.inductiveautomation.com/u/Eden.Mar)\
**Post date:** [January 16, 2026, 6:49pm UTC](https://forum.inductiveautomation.com/t/historian-sdk-api-changes-in-ignition-8-3-3/112926/4 "2026-01-16T18:49:10Z")

</div>

Hi Kurt, are there any future plans to allow developers the ability to create their own store and forward/quarantine implementations?

---

<div class="post-metadata">

**Author:** ![Eden.Mar](https://avatars.discourse-cdn.com/v4/letter/e/35a633/32.png) [@Eden.Mar](https://forum.inductiveautomation.com/u/Eden.Mar)\
**Post date:** [January 23, 2026, 6:41pm UTC](https://forum.inductiveautomation.com/t/historian-sdk-api-changes-in-ignition-8-3-3/112926/5 "2026-01-23T18:41:28Z")

</div>

@Kurt.Larson

---

<div class="post-metadata">

**Author:** ![Kurt.Larson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kurt.larson/32/6426_2.png) [@Kurt.Larson](https://forum.inductiveautomation.com/u/Kurt.Larson)\
**Post date:** [January 23, 2026, 7:31pm UTC](https://forum.inductiveautomation.com/t/historian-sdk-api-changes-in-ignition-8-3-3/112926/6 "2026-01-23T19:31:35Z")

</div>

> Unfortunately, it looks like this file wasn't relocated into the `historian-gateway-api` module. I'll get this fixed ASAP. Thanks.

This has been fixed for 8.3.3.

> Hi Kurt, are there any future plans to allow developers the ability to create their own store and forward/quarantine implementations?

Yes, this was an unfortunate oversight due to all the 8.3 changes in this area. I'll make a new post once it's possible. I can't give an exact timeline, but I'll try to prioritize it for 8.3.5.

---

<div class="post-metadata">

**Author:** ![Eden.Mar](https://avatars.discourse-cdn.com/v4/letter/e/35a633/32.png) [@Eden.Mar](https://forum.inductiveautomation.com/u/Eden.Mar)\
**Post date:** [February 10, 2026, 6:26pm UTC](https://forum.inductiveautomation.com/t/historian-sdk-api-changes-in-ignition-8-3-3/112926/7 "2026-02-10T18:26:05Z")

</div>

Hi @Kurt.Larson , the webform for my custom historian doesn’t seem to respect the @DefaultValue annotation. Is this a known issue?

---

<div class="post-metadata">

**Author:** ![louagejasper](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/louagejasper/32/86311_2.png) [@louagejasper](https://forum.inductiveautomation.com/u/louagejasper)\
**Post date:** [July 7, 2026, 11:32am UTC](https://forum.inductiveautomation.com/t/historian-sdk-api-changes-in-ignition-8-3-3/112926/8 "2026-07-07T11:32:49Z")

</div>

Since we like the new API that much, I've made a video about it, you can watch it here:  
New video about Ignition's historian API in 8.3! Go watch it here:

[![](https://us1.discourse-cdn.com/inductiveautomation/original/3X/3/f/3f28eed2ddb9ca710aa720cf1bb90dd5f8a9bc1c.jpeg "Ignition’s 8.3 New Historian API Explained (and how to use it)") ](https://www.youtube.com/watch?v=qWRpDiBvPmU)
