# Is it possible to create a Vision Component that is able to create Instances of Templates?

**URL:** <https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496>\
**Category:** Module Development\
**Tags:** ignition83, vision\
**Created:** [March 15, 2026, 8:00pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496 "2026-03-15T20:00:10Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![MG3](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mg3/32/84125_2.png) [@MG3](https://forum.inductiveautomation.com/u/MG3)\
**Post date:** [March 15, 2026, 8:00pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/1 "2026-03-15T20:00:10Z")

</div>

Hi all,

Looking to make a Vision Component that acts as a Custom implementation of the _Template Canvas_. From what I can tell this might not be possible (i.e. accessing and creating instances of Ignition Templates) but I am hoping someone might have a little insight and able to confirm whether this is in fact passed the technical limitations as I know IA obviously have to keep their in-house module source code under tight wraps.

All answers are appreciated thanks!

---

<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:** [March 15, 2026, 9:00pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/2 "2026-03-15T21:00:07Z")

</div>

You can subclass the Template Canvas in a 3rd party module to create a version with custom behavior.

---

<div class="post-metadata">

**Author:** ![MG3](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mg3/32/84125_2.png) [@MG3](https://forum.inductiveautomation.com/u/MG3)\
**Post date:** [March 15, 2026, 9:09pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/3 "2026-03-15T21:09:48Z")

</div>

This is excellent news for me, is it just extending a class and if so any idea what the reference would be, etc. I tried building upon built-in modules before (or at least implementing behaviour) but was unable to see how to do so, are you able to point me to documentation as I could never find it!

---

<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:** [March 15, 2026, 9:27pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/4 "2026-03-15T21:27:48Z")

</div>

Start with the Vision Component example module:

> **[Ignition SDK Programmer's Guide | Ignition SDK Programmer's Guide](https://www.sdk-docs.inductiveautomation.com/)**
>
> Description will go into a meta tag in

Then subclass this:

> **[TemplateCanvas](https://sdk.inductiveautomation.com/javadoc/ignition83/8.3.4/com/inductiveautomation/factorypmi/application/components/TemplateCanvas.html)**
>
> declaration: package: com.inductiveautomation.factorypmi.application.components, class: TemplateCanvas

---

<div class="post-metadata">

**Author:** ![MG3](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mg3/32/84125_2.png) [@MG3](https://forum.inductiveautomation.com/u/MG3)\
**Post date:** [March 15, 2026, 9:30pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/5 "2026-03-15T21:30:44Z")

</div>

> [@pturmel](#):
>
> [TemplateCanvas](https://sdk.inductiveautomation.com/javadoc/ignition83/8.3.4/com/inductiveautomation/factorypmi/application/components/TemplateCanvas.html)

Thanks, this is exactly what I was looking for. I always did look to see if built-in components could be extended but seems I always missed this part of the docs. Thanks!

---

<div class="post-metadata">

**Author:** ![MG3](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mg3/32/84125_2.png) [@MG3](https://forum.inductiveautomation.com/u/MG3)\
**Post date:** [March 16, 2026, 11:37am UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/6 "2026-03-16T11:37:57Z")

</div>

Sorry Phil,

Any ideas on the best way to deal with the BeansInfo? As I say, I haven’t extended in-built components before and this is a relatively painful one to start with. Is there a way I can essentially transfer over the Component Properties to my Override or do I need to figure out what the original BeanInfos contains and remake it from scratch?

Kind Regards,

Max

---

<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:** [March 16, 2026, 1:09pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/7 "2026-03-16T13:09:22Z")

</div>

You need your own beaninfo. You can **reference** the original to establish a baseline and just provide the differences.

---

<div class="post-metadata">

**Author:** ![MG3](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/mg3/32/84125_2.png) [@MG3](https://forum.inductiveautomation.com/u/MG3)\
**Post date:** [March 16, 2026, 1:33pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/8 "2026-03-16T13:33:55Z")

</div>

When you say **reference** do you mean extending the `TemplateCanvasBeanInfo` class? If I am just extending the `TemplateCanvasBeanInfo` how do I override the Constructor to point to my new component instead of `TemplateCanvas.class`? I.e. the equivalent of:

```python
public class ExBeanInfo extends CommonBeanInfo {

    public ExBeanInfo() {
        super(ExComponent.class, DynamicPropertyProviderCustomizer.VALUE_DESCRIPTOR, StyleCustomizer.VALUE_DESCRIPTOR);
    }

```

As I know that the `TemplateCanvasBeanInfo` already extends `CommonBeanInfo`, I have never met a situation where I need to change something like this.

---

<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:** [March 16, 2026, 1:45pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/9 "2026-03-16T13:45:40Z")

</div>

No. Extend `CommonBeanInfo` and implement [getAdditionalBeanInfo()](https://docs.oracle.com/en/java/javase/17/docs/api/java.desktop/java/beans/SimpleBeanInfo.html#getAdditionalBeanInfo()).

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [March 16, 2026, 4:17pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/10 "2026-03-16T16:17:31Z")

</div>

You could also create instances of [`TemplateHolder`](https://sdk.inductiveautomation.com/javadoc/ignition83/8.3.0/com/inductiveautomation/factorypmi/application/components/template/TemplateHolder.html) in your own custom component, if whatever you're trying to do doesn't work well as a direct subclass of the existing template canvas component.

---

<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:** [March 16, 2026, 4:35pm UTC](https://forum.inductiveautomation.com/t/is-it-possible-to-create-a-vision-component-that-is-able-to-create-instances-of-templates/114496/11 "2026-03-16T16:35:58Z")

</div>

> [@paul-griffith](#):
>
> create instances of [`TemplateHolder`](https://sdk.inductiveautomation.com/javadoc/ignition83/8.3.0/com/inductiveautomation/factorypmi/application/components/template/TemplateHolder.html)

If you do this, be sure to call the lifecycle methods when they are called on your outer component, plus when dynamically adding/removing on the run. This is required to start/stop the template's nested bindings.
