Release 2.5.0, featuring improved repository restore workflow, updated Microsoft 365 backup engine, and enhanced logging for custom action scripts.
Improved replication task initialization performance and resource efficiency. Replication task initialization is now significantly faster when the target storage already contains existing data, while simultaneously reducing peak CPU and memory consumption. For cyclic replication scenarios, this optimization accelerates task execution by up to 66 times (e.g., reducing initialization time from 12 hours to 11 minutes), maintaining a stable infrastructure load without compromising data restore capabilities from replicated storage.
Updated Microsoft 365 backup and restore engine to Microsoft Graph API. GitProtect now uses the Microsoft Graph API instead of legacy Exchange Web Services (EWS) to process Microsoft 365 email messages, contacts, and calendars. This architectural transition ensures long-term service compliance and stability ahead of Microsoft's October 2026 EWS deprecation while accelerating backup and restore throughput. The update is fully backward-compatible with existing EWS-created backups and enhances item-level recovery fidelity by preserving message properties, categories, and attachment integrity. Additionally, optimized pagination and duplicate detection resolve stability issues during recovery across all backup types.
Updated management panel task execution logic to consistently respect GitProtect Management Service concurrency limits. The management panel now strictly enforces maximum concurrent backup task limits returned by GitProtect Management Service across all backup plan types. This change eliminates legacy environment-specific caps and hard-coded constraints, ensuring the panel correctly applies configured defaults (5 concurrent tasks for cloud, 20 for on-premises) and fully honors custom values defined via the XOPERO_MAX_CONCURRENT_BACKUP_TASKS environment variable.
Updated AES-256 encryption warning display behavior in backup plan configurations. GitProtect no longer displays the AES-256 encryption warning for workloads such as Microsoft 365 to eliminate unnecessary user confusion regarding features not applicable to those configurations.
Improved custom action script execution logging for backup and replication tasks. GitProtect now logs the execution progress and output of custom action scripts across Windows and Linux backup agents (workers). Execution logs track script initiation, completion status, and console output, providing complete visibility into pre- and post-task operations, while ensuring that sensitive data such as passwords remain masked in the logs.
Improved Jira and Confluence backup browsing performance. GitProtect now utilizes a metadata caching mechanism to accelerate browsing and enhance reliability when preparing Jira and Confluence backups for restoration. This update eliminates timeout issues in large enterprise organizations, introduces real-time visual progress indicators during data loading, and guarantees accurate synchronization status feedback regardless of backup retention age.
Improved repository restore workflow with enhanced destination controls and validation. GitProtect now gives administrators clearer visibility and control over restore destinations during repository recovery. This update separates custom repository naming from target path selection, enforces strict organization and repository naming rules, and introduces clear in-app notification guidance detailing fallback behaviors across GitHub, GitLab, and Azure DevOps environments.
Fixed an issue where the Intel-based macOS backup agent failed to start and register after installation. The agent now starts correctly following installation and successfully registers with the GitProtect Management Service. Previously, initialization on Intel-based macOS devices failed without generating diagnostic logs.
Fixed an issue where remote updates failed on GitProtect Linux backup agents due to library dependencies. The agent now completes remote updates successfully and remains online throughout the entire upgrade process. Previously, remote updates could fail when restarting the agent service due to a library dependency issue, causing the agent device to go offline. This fix resolves the dependency handling during service restarts to ensure a smooth and reliable upgrade path for Linux endpoints.
Resolved an issue where SharePoint list view threshold limits caused backup task failures. The SharePoint backup module now gracefully handles SharePoint's list view threshold limit during backup execution. Instead of failing the entire backup task with an unhandled exception, the backup engine logs error code DV0395 specifying the affected site and list, allowing the job to continue backing up all remaining resources without interruption.
The events list now accurately displays log entries for restore tasks and other sub-logs. When a filter targets sub-logs exclusively, the system automatically switches to a dedicated query mode that retrieves sub-log entries independently from standard task package logs, delivering precise filter results without degrading database performance during standard event searches.
Resolved an issue where SharePoint backups failed when encountering a null Author field. The SharePoint backup module now correctly handles sites and items where the Author field contains a null value. Previously, encountering an unassigned Author field triggered a NullReferenceException, causing the backup task to fail. The backup engine now gracefully preserves null values during execution, ensuring uninterrupted backup operations across all SharePoint resources.
Fixed an issue where SLA percentages displayed incorrectly after switching Jira backup types. The SLA summary in the management panel now displays accurate data protection metrics, providing backup administrators with a clear and reliable view of overall coverage. Previously, switching a Jira backup plan configuration to granular backup mode could cause inaccurate SLA compliance percentages to render in the executive overview.
Temporary database files are now automatically removed from the target directory during Microsoft 365 email restore operations to on-premises locations. This eliminates leftover conversion containers that previously caused file access blocks during restoration and cluttered the final storage path.
Fixed an issue where refresh storage information tasks failed when target S3 storage was offline. The system now automatically skips the operation if target S3-compatible storage is unavailable at the completion of a replication task.
Resolved an issue where pre- and post-backup scripts failed on Linux agents due to system library interference. Pre-backup and post-backup scripts executed by the backup agent now run reliably when invoking applications that depend on system libraries. Previously, inherited agent environment settings interfered with external application execution, causing custom scripts to unexpectedly fail or crash.
The management panel now correctly displays descriptive, readable error messages instead of raw error codes when a SharePoint protection plan cannot be applied due to insufficient permissions or missing site assignments. This enables backup administrators to rapidly diagnose and resolve configuration issues directly within the interface without consulting external diagnostic documentation.
Fixed an issue where transient SMB errors caused backup and restore tasks to fail. Backup and restore operations targeting SMB storage destinations now gracefully handle transient STATUS_INVALID_SMB errors by automatically retrying the connection. Previously, temporary network or server-side interruptions could cause task execution to fail immediately. The engine now automatically recovers from connection drops, ensuring uninterrupted data protection and reliable recovery workflows.
Fixed an issue where Jira attachment backups failed with an OutOfMemoryException in large environments. These backups in large-scale organizations (500 GB+) now execute reliably without triggering memory exhaustion. This fix optimizes memory allocation during attachment processing, ensuring complete and reliable backups across all Jira space resources.
Resolved an issue where GitHub custom properties synchronization failed across all organizations due to single-organization transient errors. GitHub custom properties synchronization now continues processing remaining organizations if fetching the schema for one organization fails due to a transient error (such as HTTP 404). Previously, a transient error in a single organization blocked synchronization across the entire account; the system now preserves the existing schema for the affected organization while successfully updating all remaining entities. If a permanent authorization failure (HTTP 401) or suspended account state occurs, synchronization halts cleanly, and the organization is correctly flagged for repair.
Fixed an issue where backing up archived Confluence spaces triggered errors during blueprint and template processing. Backup operations for archived Confluence spaces now correctly capture space blueprints and templates across both full and incremental backup tasks. This update ensures complete, automated data protection for archived Confluence environments without requiring manual workarounds (such as temporarily restoring spaces to an active state).