CreatioHelper is a comprehensive cross-platform tool for managing Terrasoft Creatio installations. It streamlines development workflows through automation of routine operations and provides both GUI and API interfaces.
-
Package Installation: Install packages into Creatio with optional cleanup
- Delete packages before and/or after installation
- Prevalidate packages before installation
- Automatic reset of stale
IsLocked/IsChangedflags for locked packages (SysPackage.InstallType = 1) before install — clears leftover SVN-style locks that would otherwise prevent schema updates. Optional checkbox extends the reset to unlocked (developer) packages.
-
File Design Mode: Synchronize packages between Creatio database and filesystem
- Download packages from Creatio DB to filesystem (Creatio → FS)
- Upload packages from filesystem to Creatio DB (FS → Creatio)
- Clean & Validate package sources
-
Compilation: Compile the configuration via WorkspaceConsole integration. Every mode builds both halves — the server assembly (
conf/bin) and the client static content (conf/content) — so neither is left stale.Mode Chain Notes Compile (default click) RegenerateSchemaSources+BuildConfiguration -force=FalseRegenerates every schema source from its metadata, then compiles. Thorough and self-healing for stale metadata. Fast Compile (dropdown) Build+BuildConfiguration -force=FalseCompiles only the changed schemas — the same operation behind the Creatio web Compile button. Roughly 3x faster than Compile on a large configuration. Requires Creatio 8.0.10+; disabled on older versions. Compile All (dropdown) RegenerateSchemaSources+RebuildWorkspace+BuildConfiguration -force=TrueFull rebuild of all schemas plus full client content. -
Configuration Rollback: Roll back to the state before the last package installation. Creatio writes a configuration backup automatically on every install (
conf/backup); this exposes it as a one-click rollback that stops the site, restores, compiles, clears Redis and starts back up. Shows which packages will be reverted or removed before you confirm. Requires Creatio 8.0.2+. -
Connection Strings Editor: Edit
ConnectionStrings.configof the selected site through a form instead of raw XML- Smart per-field editing for
db,redis,messageBroker,elasticsearchCredentials,influx,s3Connectionand path entries - Database type detected automatically from
Web.config/Terrasoft.WebHost.dll.config— MS SQL Server, PostgreSQL and Oracle (including TNS descriptors) are all supported - Redis mode selector: Single node / Cluster (Creatio 7.18.0+) / Sentinel (deprecated, hidden on 7.18.3+); cluster nodes are edited as a host:port list
- Unknown parameters (
Pooling,Max Pool Size,maxReadPoolSize,useTls, …) are preserved and editable via an Other parameters field per section - Entries missing from the file are created on save only when their fields are filled
- Smart per-field editing for
-
Live Status Bar: Creatio version, IIS pool/site state (or service state in Folder mode) and application health for the selected site, refreshed every 10 seconds and after each deployment. Health is an HTTP check against the application itself, so it catches the case where the pool is running but the app is down.
-
License Management: Generate license requests and load licenses into Creatio
-
IIS / Folder Mode: Manage Creatio via IIS (automatic start/stop of sites and app pools) or directly via folder path without IIS
-
Redis Integration: Check Redis status and clear cache after deployments
-
Multi-Server Synchronization: Apply changes across multiple Creatio instances simultaneously
- SFTP File Copy: Incremental rsync-style synchronization over SSH/SFTP (SSH.NET). Works from any OS to any Linux/macOS target — only changed files are transferred (size + mtime comparison). Per-server SSH credentials (password or private key). Configurable folder list per server; leave empty to sync the entire site directory.
- External Syncthing Integration: Connect to external Syncthing instance via REST API
- Real-time synchronization monitoring via Events API
- Multi-folder support (e.g., separate folders for Terrasoft.WebApp and bin)
- Pause/Resume folders during operations
- Direct link to Syncthing Web UI
- Bulk IIS management across all target servers
-
Automatic Updates: Background check against GitHub Releases (Stable/Beta channels). On Windows downloads, replaces files and restarts in one click; on Linux/macOS opens the release page in the browser.
- HTTP API: Remote control and monitoring of Creatio instances
- Automation: Scriptable deployments and operations
- Built-in Sync (in development): Native Syncthing-inspired sync protocol implementation (planned features)
Headless deployment automation following the same "execute what is filled in" philosophy as the Desktop app. Available for win-x64 and linux-x64 in every release ZIP.
creatio-helper-cli [options] # Run deployment
creatio-helper-cli restore --list [options] # Show what the last package installation backed up
creatio-helper-cli restore --yes [options] # Roll back to the state before the last installation
creatio-helper-cli redis-clear [options] # Clear Redis cache
creatio-helper-cli iis start|stop|restart [options] # Manage IIS pools/sites (Windows)
creatio-helper-cli lic load [options] # Load license response file into Creatio
creatio-helper-cli lic request [options] # Save license request file from Creatiorestore options:
| Flag | Description |
|---|---|
--list |
Only show the backup contents, restore nothing |
--yes |
Confirm the restore (required; the operation cannot be undone) |
--no-package-data |
Do not reinstall package data |
--ignore-sql-compatibility |
Skip the SQL script backward compatibility check |
Options:
| Flag | Description |
|---|---|
--settings <path> |
Load AppSettings from JSON (same format as Desktop settings.json) |
--site <path> |
Filesystem site path (overrides settings) |
--iis-site <name> |
IIS site name (Windows only) — auto-resolves app pool |
--service-name <name> |
Windows/Linux service name (Folder mode) |
--packages-path <path> |
Install packages from path |
--delete-before "A,B" |
Delete packages before installation |
--delete-after "A,B" |
Delete packages after installation |
--prevalidate true|false |
Prevalidate before install |
--reset-unlocked-flags |
Also reset IsLocked/IsChanged on unlocked packages (locked are reset by default during install) |
--compile incremental|fast|full|none |
Compile strategy. fast compiles only changed schemas and requires Creatio 8.0.10+ (falls back to incremental with a warning on older versions); none skips compilation entirely — useful for file-sync-only runs |
--sync none|files|syncthing |
Sync mode for multi-server |
--server "name=X,..." |
Add a target server (repeatable; if any --server is present, replaces the ServerList from --settings). See keys below. |
--server keys: |
| Key | Required | Description |
|---|---|---|
name |
yes | Display name for the server (used in logs) |
host |
yes | SSH hostname or IP address |
port |
no | SSH port (default: 22) |
user |
yes | SSH username |
pass |
one of | SSH password (use pass or key, not both) |
key |
one of | Path to SSH private key file (e.g. /home/user/.ssh/id_rsa) |
path |
yes | Absolute path to the Creatio site directory on the remote server |
service |
no | Linux service name to stop before sync and start after (leave empty to skip) |
sudo |
no | Set sudo=true to upload via /tmp then sudo mv — required when the SFTP user cannot write directly to path (e.g. PermitRootLogin no and site owned by root) |
sudo-pass |
no | Sudo password for the SSH user. If omitted, passwordless sudo (NOPASSWD) is assumed. Only used when sudo=true. |
owner |
no | File/directory owner to set after sudo mv, in user:group format (default: root:root). Only used when sudo=true. |
| --sync-folders "A,B" | Relative folder paths to sync for all servers (e.g. "Terrasoft.Configuration"). Overrides per-server folder list from settings. Leave empty (or omit) to sync the entire site directory. |
| --sync-exclude "A,B" | Comma-separated names or glob patterns to exclude from sync (e.g. "logs,*.log,App_Data"). Name-only patterns (no /) match at any depth; path patterns (with /) match relative to the site root. Applies to both files and directories. |
| --no-redis-clear | Skip Redis cache clear (useful when attaching IDE to Creatio) |
| --no-iis-restart | Skip IIS stop/start during compile (keeps process alive for IDE attach) |
| --quick-install | Skip compilation after package install (faster, like clio) |
| --no-color | Disable ANSI colors |
| --quiet | Only print [ERROR] lines |
lic load options:
| Flag | Description |
|---|---|
--lic-file <path> |
Path to the license response file (.lic) |
lic request options:
| Flag | Description |
|---|---|
--destination <path> |
Directory to save the license request file |
--customer-id <id> |
Customer ID for the license request |
--file-name <name> |
Output file name (optional) |
Examples:
# Run a full deploy using a saved settings file
creatio-helper-cli --settings .\deploy.json
# Compile-only with no Redis clear and no IIS restart (IDE attach scenario)
creatio-helper-cli --iis-site AstanaMotors --compile incremental --no-redis-clear --no-iis-restart
# Fast compile of changed schemas only (Creatio 8.0.10+)
creatio-helper-cli --iis-site AstanaMotors --compile fast
# Show what the last package installation backed up, then roll it back
creatio-helper-cli restore --list --iis-site AstanaMotors
creatio-helper-cli restore --yes --iis-site AstanaMotors
# Install packages and extend the IsLocked/IsChanged reset to developer packages
creatio-helper-cli --iis-site AstanaMotors --packages-path C:\drop\pkgs --reset-unlocked-flags
# Restart IIS pool + site (no app touch)
creatio-helper-cli iis restart --iis-site AstanaMotors
# Install packages without full rebuild (faster, incremental only)
creatio-helper-cli --iis-site AstanaMotors --packages-path C:\drop\pkgs --quick-install
# Sync files to a Linux server via SFTP (skip compilation, skip Redis)
creatio-helper-cli --site /var/www/creatio --sync files --compile none --no-redis-clear \
--server "name=PROD,host=10.0.0.5,port=22,user=deploy,pass=secret,path=/var/www/creatio,service=creatio" \
--sync-folders "Terrasoft.Configuration"
# Same via settings file, with CLI override for a different target
creatio-helper-cli --settings deploy.json --sync files --compile none \
--server "name=STAGING,host=10.0.0.6,port=22,user=deploy,pass=secret,path=/var/www/creatio-staging,service=creatio"
# Sync to multiple servers simultaneously
creatio-helper-cli --site /var/www/creatio --sync files --compile none --no-redis-clear \
--server "name=SERVER1,host=10.0.0.5,port=22,user=deploy,pass=secret,path=/var/www/creatio,service=" \
--server "name=SERVER2,host=10.0.0.6,port=22,user=deploy,pass=secret,path=/var/www/creatio,service="
# Sync files excluding logs directory and all .log files
creatio-helper-cli --site /var/www/creatio --sync files --compile none --no-redis-clear \
--server "name=PROD,host=10.0.0.5,port=22,user=deploy,pass=secret,path=/var/www/creatio,service=creatio" \
--sync-exclude "logs,*.log"
# Exclude a specific file inside a specific directory (path pattern with /)
creatio-helper-cli --site /var/www/creatio --sync files --compile none --no-redis-clear \
--server "name=PROD,host=10.0.0.5,port=22,user=deploy,pass=secret,path=/var/www/creatio,service=creatio" \
--sync-exclude "Terrasoft.WebApp/Web.config"
# Exclude multiple directories, file patterns, and a specific nested file
creatio-helper-cli --site /var/www/creatio --sync files --compile none --no-redis-clear \
--server "name=PROD,host=10.0.0.5,port=22,user=deploy,pass=secret,path=/var/www/creatio,service=creatio" \
--sync-exclude "logs,App_Data,*.log,*.bak,Terrasoft.WebApp/Web.config"
# Sync to Linux server where PermitRootLogin is disabled (passwordless sudo required)
# sudo=true: upload to /tmp, then sudo mv + sudo chown + sudo touch
# sudo=true with private key + NOPASSWD sudoers:
creatio-helper-cli --site C:\Site --sync files --compile none \
--server "name=prod,host=10.0.0.1,user=croot,key=C:\Users\me\.ssh\id_rsa,path=/var/www/creatio,sudo=true,owner=root:root"
# sudoers entry (restrictive): croot ALL=(ALL) NOPASSWD: /usr/bin/mv,/usr/bin/chown,/usr/bin/touch,/usr/bin/mkdir,/usr/bin/rm
# sudo=true with password (no NOPASSWD required):
creatio-helper-cli --site C:\Site --sync files --compile none \
--server "name=prod,host=10.0.0.1,user=croot,pass=secret,path=/var/www/creatio,sudo=true,sudo-pass=mypassword,owner=root:root"
# Load a license response file
creatio-helper-cli lic load --iis-site AstanaMotors --lic-file C:\licenses\response.lic
# Save a license request file
creatio-helper-cli lic request --iis-site AstanaMotors --destination C:\licenses --customer-id 12345For detailed usage instructions, see the User Guide.
All source projects are located in src/, and test projects in tests/. Main projects:
CreatioHelper.Domain: domain entities and enums, independent of other layers.CreatioHelper.Application: use-cases (commands and handlers via MediatR), logic interfaces.
CreatioHelper.Infrastructure: implementations of interfaces, interaction with IIS, file system, etc.CreatioHelper.Shared: utilities for file operations, logging, and configuration.CreatioHelper.Contracts: DTO classes for data exchange between Agent and other parts.
CreatioHelper.Desktop: Avalonia-based GUI application.CreatioHelper.Agent: minimal ASP.NET Core web service providing remote control API.
Settings are stored in memory by default and reset on each restart. To persist settings across restarts, create an empty settings.json file in the same folder as the executable. CreatioHelper will automatically read from and write to it.
- .NET 10 SDK (https://dotnet.microsoft.com)
- Git
- Windows with IIS (for IIS management features, can also work in Folder Mode without IIS)
- Redis (optional, for cache management)
- Syncthing (optional, for real-time distributed file synchronization)
dotnet build CreatioHelper.slndotnet run --project src/CreatioHelper.Desktopdotnet run --project src/CreatioHelper.Agent- User Guide - Complete guide for using CreatioHelper Desktop application
- Changelog - What changed in each release
- Built-in Sync Documentation - Planned native Syncthing-inspired synchronization for Agent (in development)
Bug reports, feature requests and pull requests are welcome — see CONTRIBUTING.md for how to build the project and what the conventions are.
Questions and usage discussions belong in Discussions. Security issues should be reported privately — see SECURITY.md.
Licensed under the GNU General Public License v3.0.
Special thanks to the members of the PeaceTeam from Banza for their invaluable contributions in development and testing:
- Oleksandr
- Anna
- Roman
- Oleksandr
- Viacheslav
- Dasha
- Anton
- Vadym
- Roma
- Vitia
- Olena
- Vitalii
- Dmytro
- KotikSmerit
- Olena