Skip to content

Feature/scmu storage type picker - #6041

Draft
abparticular wants to merge 5 commits into
rename-persistencetypefrom
feature/scmu-storage-type-picker
Draft

abparticular wants to merge 5 commits into
rename-persistencetypefrom
feature/scmu-storage-type-picker

Conversation

@abparticular

Copy link
Copy Markdown
Contributor

No description provided.

It now writes the EF Core persisters' settings:

- The database connection string.
- The Error instance's persister settings, taken from its persistence manifest as the Audit instance already did.
- The maintenance port and full text search settings, only when the persistence manifest declares them. The RavenDB manifests now declare EnableFullTextSearchOnBodies.
- The message body storage settings, validated per storage type. A file system body path is checked with the other instance paths and created with modify access for the service account.

The Error EF Core manifests default MessageBody/StorageType to FileSystem since installation is assumed to be on-prem.
Removing an instance with the "remove database" option deleted the paths each instance type hard-coded for RavenDB. The removal now uses the paths listed in the persistence manifest's SettingsWithPathsToCleanup:

- The EF Core manifests list the file system message body path. It is removed only when message bodies are stored on the file system.
- Nothing is removed for an external RavenDB database.

The SCMU remove dialog hides the data option when there is nothing local to remove, labels it for database files or message body files, and names the external database or body storage that the user must delete manually. The Remove cmdlets' -RemoveDB help explains the same.
The edit, details and advanced options screens now follow the instance's persistence manifest instead of assuming an embedded RavenDB database.

- The edit screens show and validate the database maintenance port and the full text search option only when the manifest declares them.
- The details screen links to the database path only for the embedded database, and links to the message body path when message bodies are stored on the file system.
- Maintenance mode is offered only for the embedded database, or when an instance is already in maintenance mode so the user can stop it.
New-ServiceControlInstance and New-ServiceControlAuditInstance now accept:

- -StorageType, limited to the storage types that can be installed, which excludes the legacy RavenDB35 type.
- -DatabaseConnectionString, required for SQL Server and PostgreSQL.
- -MessageBodyStorageType, which defaults to FileSystem, with
  -MessageBodyPath or the Azure Blob and S3 parameters.

-DBPath and -DatabaseMaintenancePort are required only for RavenDB.

The cmdlets reject a parameter that the chosen storage type or message body storage type does not use.
The Add Instance wizard now shows a storage type picker for the storage types that can be installed, which excludes the legacy RavenDB35 type. The Error and
Audit instances use the same storage type.

For SQL Server and PostgreSQL, the wizard asks for a database connection string and hides the RavenDB database path and maintenance port fields. When both instances are added, the Audit instance uses the same connection string as the Error instance, unless the user enters a different one.

Both instances store message bodies on the file system. The wizard shows only the path, which defaults to %ProgramData%\Particular\ServiceControl\<instance name>\MessageBodies.
@abparticular
abparticular force-pushed the feature/scmu-storage-type-picker branch from a7ce8a9 to 7f11b25 Compare November 4, 2026 07:54
@abparticular
abparticular changed the base branch from master to rename-persistencetype November 4, 2026 07:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant