# Execution plan If fully configured the deployment script executes the following steps in that fixed sequence: * loop over profiles ... and per profile ... * set profile data by sourcing [profile]/config.sh * download Software archive * detect if download is newer than the last one * jump into installation dir of your application * optional: execute pre installation tasks (1) * optional: run cleanup (1) * extract software archive (1) * create config files * optional: execute post installation tasks (1) * optional: execute post config change tasks (1) or (2) (1) if a new software version was downloaded (2) if one of the config files was created or changed ## Graphical view ```mermaid graph TD START(START) --> Profile Profile(source profilename/config.sh) --> DL DL(Download software) --> IsNew IsNew{new download?} IsNew -->|no| new0(Update only flag=0) IsNew -->|yes| new1(new installation flag=1) new1 --> preInstall preInstall(optional: Pre install tasks) --> preCleanup preCleanup(optional: Cleanup files) --> extract extract(extract software archive) --> cont1 new0 --> cont1 cont1(( )) --> cfg cfg(Create config files) --> DoPostInstall{new download?} DoPostInstall --> |yes| PostInstall DoPostInstall --> |no| cont2 PostInstall(Run post install script) --> cont2 cont2(( )) --> DoPostChange{Changed config?} DoPostChange --> |yes| PostConfig DoPostChange --> |no| cont3 PostConfig(Run post change script) --> cont3 cont3(( )) --> anotherProfile{Another profile?} anotherProfile --> |yes|Profile anotherProfile -->|no|END END(END) ```