Application Lifecycle

In Axon Ivy, a project consists of one or more related processes. Applications consist of one or more projects. If you structure your Axon Ivy projects well into several applications, you benefit from processes being technically isolated and having independent release cycles. Understanding the application lifecycle helps developers and administrators to implement projects faster.

Imagine a process developer who digitizes business processes with the Axon Ivy Designer in an Axon Ivy project. At some point, he deploys his resulting processes onto an Axon Ivy Engine and brings them to life. At that time, he has to package his projects into an application. For deployment, it is suitable to package a complete application from one or more projects that belong together and then deploy the resulting application. A simple example:


Lynn is a low coder and is digitizing business processes for the HR department. She has just finished her first process so that employees can report expenses. She has packaged this process into the report-expense project and is packaging this project into an application called HR.


digraph hrapp { layout=neato; node [shape=box, height="0.8", width="2", color="#007095", style=filled, fixedsize="true", margin=0, fontname="Roboto,Helvetica Neue,Arial,sans-serif", fontcolor="white", fontsize=15 ]; /* nodes */ hrapp [ label="HR Application", pos="0.0,0.0!", width="2.5" height="1.5" style="dashed" fontcolor="black" labelloc="t"]; newemployee [label="Expense Report\nProject", pos="0.0,-0.05!", width="1.8" height="0.8"]; }


John is a software developer and develops business processes for the finance department. He has already successfully implemented several processes with Axon Ivy. To structure the processes well, he has packaged them into different Axon Ivy projects and packages them into the finance application.


digraph financeapp { layout=neato; node [shape=box, height="0.8", width="2", color="#007095", style=filled, fixedsize="true", margin=0, fontname="Roboto,Helvetica Neue,Arial,sans-serif", fontcolor="white", fontsize=15 ]; /* nodes */ financeapp [label="Finance Application", pos="0,0.0!", width=2.5, height=2.5, style="dashed", fontcolor="black", labelloc="t"]; sendinvoice [label="Credit Request\nProject", pos="0,0.4!", width=1.8, height=0.8]; newinvoice [label="New Invoice\nProject" pos="0,-0.6!", width=1.8, height=0.8]; }


John and Lynn are independent in their work both from a business point of view - requirements and change requests from their departments (HR and Finance), as well as from a technical point of view. They can develop in a decoupled manner and install their applications on the same Axon Ivy Engine whenever they want.


Thus, applications containing processes are deployed on an Axon Ivy Engine. The process users log in and can start the processes and are assigned to work on tasks. It is essential to understand how users are managed on an Axon Ivy Engine. The users are part of a security system. Each Axon Ivy Engine always comes with the default security system. Adding more security systems only makes sense in a multi tenancy use case. Users, their roles, and permissions are part of the security system. When you create an application, you have to define which security system this application lives in. By default, a new application is put into the default security system.


Now Gunther comes into play. Gunther runs the Axon Ivy Engine for the DevOps Lynn and John. The process users are synchronized from the company Active Directory. Process users only have one unified process start list and task list covering all applications.


digraph engine { layout=neato; node [shape=box, height="0.8", width="2", color="#007095", style=filled, fixedsize="true", margin=0, fontname="Roboto,Helvetica Neue,Arial,sans-serif", fontcolor="white", fontsize=15 ]; /* nodes */ engine [ label="Axon Ivy Engine", pos="0.0,0.0!", width="6.0", height="5.0", style="dashed", fontcolor="black", labelloc="t"]; default [ label="default", pos="0.0,-0.1!", width="5.5", height="4.5", style="dashed", fontcolor="black", labelloc="b"]; processes [ label="Processes", pos="0.0,0.0!", width="5.0", height="0.5" ]; tasklist [ label="Task list", pos="0.0,-0.7!", width="5.0", height="0.5" ]; hrapp [ label="HR Application", pos="-1.35,-1.5!", width="2.3", height="0.5" ]; financeapp [ label="Finance Application", pos="1.35,-1.5!", width="2.3", height="0.5" ]; users [ label="Users", pos="0.0,1.5!", width="5.0", height="0.5", style="dashed" fontcolor="black" labelloc="t"]; roles [ label="Roles", pos="0.0,0.8!", width="5.0", height="0.5", style="dashed" fontcolor="black" labelloc="t"]; bob [ shape="ellipse" label="Bob", pos="-1.0,1.5!", width="0.7", height="0.35"]; marc [ shape="ellipse" label="Marc", pos="1.0,1.5!", width="0.7", height="0.35"]; rick [ shape="ellipse" label="Rick", pos="1.8,1.5!", width="0.7", height="0.35"]; james [ shape="ellipse" label="James", pos="-1.8,1.5!", width="0.7", height="0.35"]; hrmanager [ shape="ellipse" label="HR Manager", pos="-1.4,0.8!" width="1.7", height="0.35"]; backoffice [ shape="ellipse" label="Backoffice", pos="1.4,0.8!" width="1.7", height="0.35"]; }

Applications are used by developers to package related processes and enable independent release cycles of different processes. This promotes feature-driven development. The process users do not realize that the individual processes are part of different applications. They only have a unified process start list and one task list. The structure of the projects can also change at any time.

Read Deployment If you want to learn how you can craft your own applications and deploy them on an Axon Ivy Engine.