Skip to content

Stand with Ukraine - Donate via Monobank to the 505th Separate Marine Battalion (ZSU)

CreatioHelper - Cross-platform automation for Terrasoft Creatio

Latest Desktop release Latest CLI release Downloads Build status License .NET 10 Supported platforms

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.

Key Features

Desktop Application

  • 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/IsChanged flags 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=False Regenerates every schema source from its metadata, then compiles. Thorough and self-healing for stale metadata.
    Fast Compile (dropdown) Build + BuildConfiguration -force=False Compiles 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=True Full 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.config of the selected site through a form instead of raw XML

    • Smart per-field editing for db, redis, messageBroker, elasticsearchCredentials, influx, s3Connection and 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
  • 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.

Agent Service

  • 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)

CLI (creatio-helper-cli)

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 Creatio

restore 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 12345

For detailed usage instructions, see the User Guide.

Project Structure

All source projects are located in src/, and test projects in tests/. Main projects:

🧠 Business Logic and Models

  • CreatioHelper.Domain: domain entities and enums, independent of other layers.
  • CreatioHelper.Application: use-cases (commands and handlers via MediatR), logic interfaces.

🧱 Infrastructure and Shared Utilities

  • 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.

🖥️ UI and Services

  • CreatioHelper.Desktop: Avalonia-based GUI application.
  • CreatioHelper.Agent: minimal ASP.NET Core web service providing remote control API.

Configuration

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.

Build and Run

Requirements:

  • .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)

Build the solution:

dotnet build CreatioHelper.sln

Run GUI (Desktop):

dotnet run --project src/CreatioHelper.Desktop

Run API (Agent):

dotnet run --project src/CreatioHelper.Agent

Documentation

Contributing

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.

License

Licensed under the GNU General Public License v3.0.

Acknowledgements

Banza

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

About

Cross-platform desktop app, CLI and agent for automating Terrasoft Creatio deployments: package installation, compilation, IIS, Redis and multi-server sync

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages