# 8.3, Issue Providing Device Extension Points

**URL:** <https://forum.inductiveautomation.com/t/8-3-issue-providing-device-extension-points/110843>\
**Category:** Module Development\
**Tags:** ignition83\
**Created:** [September 22, 2025, 5:05pm UTC](https://forum.inductiveautomation.com/t/8-3-issue-providing-device-extension-points/110843 "2025-09-22T17:05:57Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [September 22, 2025, 5:05pm UTC](https://forum.inductiveautomation.com/t/8-3-issue-providing-device-extension-points/110843/1 "2025-09-22T17:05:58Z")

</div>

I'm updating an existing module to 8.3 and am struggling to get my device types to appear in the `Create Device Connection` page, using [ignition-sdk-examples/opc-ua-device](https://github.com/inductiveautomation/ignition-sdk-examples/tree/ignition-8.3/opc-ua-device) as an example.

Here's my extension point:

```kotlin
class SnmpV1ExtensionPoint :
    DeviceExtensionPoint<SnmpV1DeviceConfig>(
        "embr-snmp-v1",
        "Snmp.device.SnmpV1Device.DisplayName",
        "Snmp.device.SnmpV1Device.Description",
        SnmpV1DeviceConfig::class.java,
    ) {
    override fun createDevice(
        context: DeviceContext,
        deviceConfig: DeviceProfileConfig,
        snmpConfig: SnmpV1DeviceConfig,
    ): Device {
        val snmpContext = SnmpV1Context(context, deviceConfig, snmpConfig)
        return SnmpDeviceImpl(snmpContext)
    }

    override fun getWebUiComponent(type: ExtensionPoint.ComponentType): Optional<WebUiComponent> {
        return Optional.of(
            ExtensionPointResourceForm(
                DEVICE_RESOURCE_TYPE,
                "Device Connection",
                this.typeId,
                SchemaUtil.fromType(DeviceProfileConfig::class.java),
                SchemaUtil.fromType(SnmpV1DeviceConfig::class.java),
                mutableSetOf<String>(),
            )
        )
    }
}

```

And then I'm returning a list of extension points in my gateway hook (that extends `AbstractDeviceModuleHook`):

```kotlin
override fun getDeviceExtensionPoints(): List<DeviceExtensionPoint<*>> {
    return listOf(SnmpV1ExtensionPoint(), SnmpV2CExtensionPoint(), SnmpV3ExtensionPoint())
}

```

I'm not seeing anything in the `Create Device Connection` page or in the logs 😕.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [September 22, 2025, 5:12pm UTC](https://forum.inductiveautomation.com/t/8-3-issue-providing-device-extension-points/110843/2 "2025-09-22T17:12:42Z")

</div>

`getDeviceExtensionPoints()` is called before the module hook's `setup()`. Make sure you aren't caught by that.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [September 22, 2025, 5:12pm UTC](https://forum.inductiveautomation.com/t/8-3-issue-providing-device-extension-points/110843/3 "2025-09-22T17:12:47Z")

</div>

Sanity check - module is installed, running, not faulted, post gateway restart? Can you add a log statement to make sure that `getDeviceExtensionPoints` is being called?

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [September 22, 2025, 5:21pm UTC](https://forum.inductiveautomation.com/t/8-3-issue-providing-device-extension-points/110843/4 "2025-09-22T17:21:53Z")

</div>

> [@pturmel](#):
>
> `getDeviceExtensionPoints()` is called before the module hook's `setup()`. Make sure you aren't caught by that.

🎉

Yup, that was it.

I omitted it from my post for brevity, but I was storing my list of extension points in object that wasn't initialized until the module hook's `setup` call.

---

<div class="post-metadata">

**Author:** ![Kevin.Herron](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/kevin.herron/32/7259_2.png) [@Kevin.Herron](https://forum.inductiveautomation.com/u/Kevin.Herron)\
**Post date:** [September 22, 2025, 5:23pm UTC](https://forum.inductiveautomation.com/t/8-3-issue-providing-device-extension-points/110843/5 "2025-09-22T17:23:42Z")

</div>

> [@bmusson](#):
>
> I omitted it from my post for brevity

Posts like this are why I have trust issues 😅

---

<div class="post-metadata">

**Author:** ![bmusson](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/bmusson/32/87530_2.png) [@bmusson](https://forum.inductiveautomation.com/u/bmusson)\
**Post date:** [September 22, 2025, 5:30pm UTC](https://forum.inductiveautomation.com/t/8-3-issue-providing-device-extension-points/110843/6 "2025-09-22T17:30:11Z")

</div>

Yeah, that's my bad 🪦
