# GitProtect 2.3.0

### 🆕 NEW FEATURES

#### <mark style="background-color:blue;">SharePoint backup and restore</mark>

Added support for **SharePoint Online** (cloud), enabling administrators to back up and restore **SharePoint** sites and associated files to **Microsoft 365**.

#### <mark style="background-color:blue;">Confluence backup and restore</mark>

Added support for **Confluence**, enabling organizations to protect and recover spaces, pages, blog posts, attachments, and key metadata (including groups and templates). Connecting via personal access token (PAT) automatically provisions a default backup plan, enabling immediate protection with no additional setup. The solution supports flexible retention policies and per-user licensing to scale with the **Atlassian** environment. Granular restore capabilities allow recovery of individual spaces, pages, blog posts, as well as users and groups, reducing downtime and avoiding full-site restores.

#### <mark style="background-color:blue;">Support for Microsoft 365 shared mailboxes</mark>

Added support for **Microsoft 365** shared mailboxes, enabling backup and restore with the same granularity as user mailboxes. Each shared mailbox requires a **Microsoft** user license. Existing organizations must be re-authorized to enable shared mailbox protection; newly added organizations include the required permissions by default.

#### <mark style="background-color:blue;">Support for GitHub sub-issues and issue types</mark>

Introduced support for **GitHub** sub-issues and custom issue types, allowing complex task hierarchies and tailored issue taxonomies to be fully preserved during backup and accurately reconstructed during restore. The feature is enabled by default for new backup plans and can be enabled for existing plans via toggle in the plan editor. Restores are supported to both original and alternative **GitHub** organizations, maintaining complete hierarchy integrity across all recovered items.

#### <mark style="background-color:blue;">Preserving original Jira issue keys during granular recovery</mark>

Added support for preserving original issue keys during **Jira** space-level (project-level) restores. Original keys are mapped to the `GitProtect_Original Key` custom field, enabling traceability across links, audits, and integrations. Available as an optional toggle in restore settings and compatible with existing metadata recovery options.

#### <mark style="background-color:blue;">Organization-level restore mapping across cloud and self-hosted Git environments</mark>

Introduced an organization-level mapping panel that eliminates the need for manual, repository-by-repository slug editing during restores. Administrators can redirect entire sets of repositories to target organizations, groups, or workspaces in a single step, including cross-platform restores between **GitHub**, **GitLab**, and **Bitbucket**. The feature is available for both cloud and self-hosted environments and includes validation to flag unavailable destinations before restore. Individual repository names can still be customized after mapping, ensuring flexibility while keeping the default workflow fast and scalable.

***

### 🔨 IMPROVEMENTS

#### <mark style="background-color:blue;">Configurable temporary folder location for backup agents</mark>

Implemented the ability to manually define the temporary data directory for backup agents (workers) in on-premises deployment models, using the `TempFolder` parameter in the configuration file.

#### <mark style="background-color:blue;">Preserving user identity during GitHub repository restores across environments</mark>

Enhanced **GitHub** repository restores with cross-environment user identity preservation. A multi-layered matching strategy reconstructs team memberships, permissions, and issue ownership without manual intervention. When a match cannot be found, the restore operator is assigned as a placeholder, with the original identity clearly documented inline. A detailed post-restore summary highlights all unresolved mappings and affected resources, providing full transparency into any adjustments made during the restore process.

#### <mark style="background-color:blue;">Support for GitHub projects v2 on GitHub Enterprise Server</mark>

Extended backup and restore support to **GitHub** projects v2 for **GitHub Enterprise Server**, maintaining consistency and feature parity with **GitHub** cloud environments.

#### <mark style="background-color:blue;">Updated default restoration settings for Azure DevOps projects</mark>

Changed the default restore behavior to use the most recent standalone repository backup instead of the repository copy included in project-level backups. This significantly reduces restore initialization time and improves overall recovery performance. The project-level restore setting remains available as an opt-in option, ensuring existing workflows remain unaffected.

#### <mark style="background-color:blue;">Visual identification of expired additional accounts</mark>

Improved the manage accounts panel to eliminate ambiguity in credential troubleshooting. Additional **Git** accounts with expired or invalid credentials are now individually flagged with clear visual indicators, providing immediate insight into affected accounts. In addition, credentials are validated in real time during edits, ensuring misconfigurations are detected at the point of saving rather than during later backup failures.

#### <mark style="background-color:blue;">Enhanced GitLab comment backup reliability</mark>

Improved the **GitLab** comment backup process with a retry mechanism that prevents failures caused by premature response type errors.

***

### &#x20;🐛 BUGFIXES

#### <mark style="background-color:blue;">Microsoft 365 mail restoration with overwrite option enabled</mark>

Resolved an issue where restoring **Microsoft 365** mailbox data to the original location with overwrite option enabled would fail with an **"Access denied"** error if the user account had been deleted and recreated using the same email address. Restores to recreated accounts now complete successfully without requiring workarounds such as disabling overwrite option or restoring to an alternate location.

#### <mark style="background-color:blue;">Partial name rules in Jira space (project) backups</mark>&#xD;

Fixed an issue where **Jira** space (project) backups using partial name rules failed to include matching spaces. The backup engine now correctly processes wildcard characters, ensuring that all intended spaces are accurately identified and included in backups.

#### <mark style="background-color:blue;">Restoring Jira workflows with custom transitions</mark>&#xD;

Fixed an issue where **Jira** workflows with custom transitions were not correctly restored to new instances. Workflows are now restored with full transition configuration intact.

#### <mark style="background-color:blue;">Azure DevOps backup failures caused by deleted package versions</mark>

Resolved an issue in **Azure DevOps** backups where deleted package versions in custom feeds could cause task failures. The backup engine now properly skips these versions, ensuring successful backup execution.

#### <mark style="background-color:blue;">Azure DevOps backup failures caused by package download errors</mark>

Errors encountered while downloading specific **Azure DevOps** package content no longer cause the entire backup task to fail.

#### <mark style="background-color:blue;">Jira issue restoration for mixed space (project) type mappings</mark>

Fixed an issue where restoring **Jira** issues from different space (project) types into a single new space could fail. Restores now complete successfully.

#### <mark style="background-color:blue;">Jira assets custom field restoration</mark>

**Jira** assets custom fields are now correctly restored with their associated AQL filter configurations, including filter scope and work item scope.

#### <mark style="background-color:blue;">Jira granular backup timestamp issue</mark>

Fixed a bug in **Jira** granular backup plans where editing and re-running a plan resulted in an incorrect start date (January 1, 1970) being shown in the aside panel. Backup execution timestamps now correctly reflect the actual start time.

#### <mark style="background-color:blue;">Preserving GitHub backup plan configuration after re-authentication (GitHub App)</mark>&#xD;

Backup plans for **GitHub** cloud organizations using **GitHub App** authentication are now automatically restored and correctly reassigned after re-authentication, ensuring configurations remain intact even when the app is reinstalled. Previously, re-authentication would leave existing plans suspended and invalid, and editing those plans could create duplicates instead of updating the original.

#### <mark style="background-color:blue;">Restoring Jira workflow transition rules that reference custom fields</mark>&#xD;

Restoring **Jira** company-managed spaces (projects) now correctly preserves workflow transition rules that reference custom fields. Previously, certain rules—such as initial status transitions that copy field values from parent issues—could lose their field mappings during restore, which could prevent child issues from being created. This fix ensures workflow integrity is maintained for all protected company-managed spaces, even in complex rule configurations.

***

<p align="center"><a href="https://gitprotect.io/latest-update.html#changelogs">ALL GITPROTECT SOFTWARE RELEASES</a></p>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://helpcenter.gitprotect.io/changelog/2026/gitprotect-2.3.0.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
