App Templates let you package a working Proxus configuration and reuse it in another Proxus environment. A template can include device models, rules, functions, outbound channels, notification channels, dashboards, reports, and security roles without copying unrelated runtime data.
Use App Templates when you want to standardize a line, machine type, customer project, demo setup, or repeatable integration pattern.

What a template contains
An App Template contains a set of selected root objects and the required child objects that make those roots usable.
For example:
- A Device can bring its device profile and profile tags with it.
- A Device Profile can bring its connection parameters and tag definitions with it.
- A Rule can bring its configured actions with it.
- A Function can be deployed during installation.
- An Application Role can carry role configuration and UNS topic permissions.
Runtime records and environment-owned objects are not offered as template roots. Alerts, telemetry rows, logs, gateway state, child parameter rows, and user login records are intentionally hidden from the selection list.

Supported root objects
Users can add these root object types to a template:
| Root object | Use it for |
|---|---|
| Application Role | Reusing role configuration and UNS topic permissions. |
| Dashboard Data | Reusing dashboard definitions. |
| Device | Reusing a device configuration together with the supporting profile data. |
| Device Profile | Reusing protocol, connection parameter, and tag definitions. |
| Function | Reusing edge function code and deployment configuration. |
| Notification Channel | Reusing notification channel configuration. |
| Report Data | Reusing report definitions. |
| Rule | Reusing automation logic and its configured actions. |
| Outbound Channel | Reusing outbound connector configuration. |

Create a template
- Open Templates > App Templates.
- Click New.
- Enter a clear Name, Description, Developer, and Usage Instructions.
- In the Objects section, click New.
- Select the root object type, then select the object instance from the popup.
- Repeat for each root object that belongs in the package.
- Save the template.

When you select an object, Proxus also resolves required dependencies. Objects that are already in the same template are filtered out, so the same source object cannot be selected twice.
Select the object that a user would naturally configure and reuse. For a device profile, select Device Profile, not its individual parameter or tag rows. For automation, select Rule, not a generated alert.
Export and import
To move a template between systems:
- Open the template.
- Click Export Template.
- Save the downloaded JSON package.
- In the target Proxus system, open Templates > App Templates.
- Click Import Template and select the JSON package.
Imported templates keep their package identity. If a template with the same package identity already exists, Proxus blocks the second import instead of silently creating a duplicate.
Install behavior
Installing a template creates installed copies of the packaged objects in the target environment.
During installation:
- Proxus preserves object names when there is no conflict.
- If a name conflicts with an existing object, Proxus adds a template-specific suffix only for the conflicting installed copy.
- Installed devices are created inactive first, then activated after their dependencies are ready.
- Installed functions are deployed after they are created.
- External environment references, such as gateways, remain target-environment concerns and should be reviewed after installation.
Uninstall behavior
Uninstall removes the installed copies created by the template. It does not delete the template definition itself and does not delete the original source objects that were used to build the package.
During uninstall:
- Functions created by the template are undeployed before removal.
- Devices created by the template are deactivated before removal.
- The template remains available so it can be installed again later.
Operational rules
Use these rules before exporting a package:
- Do not package runtime output such as alerts, telemetry, system logs, or live gateway status.
- Do not package child rows directly when their parent is the meaningful reusable object.
- Use Application Role for reusable security configuration; do not package individual users or login records.
- Review environment-specific references after import, especially gateway mappings and external endpoints.
- Test install and uninstall in a staging environment before using a package as a rollout standard.