We have a liquibase command that looks something like this:

```sh
/liquibase/liquibase \
       --driver=org.postgresql.Driver \
       --changeLogFile="db.changelog-master.xml" \
       --url=<redacted> \
       --username=<redacted> \
       --password=<redacted> \
       update \
       -Dcoreschema="${core_schema}"
```

After upgrading the CLI from 4.3.3 to 4.4.0, it fails with the following error:

```
Unexpected argument(s): -Dcoreschema=public

For detailed help, try 'liquibase --help' or 'liquibase <command-name> --help'
```

Since the release notes state "this release should be 100% backwards compatible", I expect this is an oversight? Or is there a replacement for the `-Dproperty=value` syntax? I haven't found one looking through `--help` and the [property substitution docs](https://docs.liquibase.com/concepts/basic/changelog-property-substitution.html) at least.

The syntax can also still be found on https://docs.liquibase.com/tools-integrations/cli/home.html:

![image](https://user-images.githubusercontent.com/2620907/122090597-36d63400-ce08-11eb-92e8-d320cd5c5baa.png)


}
    private void executeSyncHub(Database database, Liquibase liquibase) throws CommandLineParsingException, LiquibaseException, CommandExecutionException {
        Map<String, Object> argsMap = new HashMap<>();
        CommandScope liquibaseCommand = createLiquibaseCommand(database, liquibase, "internalSyncHub", argsMap);
        liquibaseCommand
                .addArgumentValue(InternalSyncHubCommandStep.HUB_CONNECTION_ID_ARG, hubConnectionId == null ? null : UUID.fromString(hubConnectionId))
                .addArgumentValue(InternalSyncHubCommandStep.URL_ARG, url)
                .addArgumentValue(InternalSyncHubCommandStep.DATABASE_ARG, database)
                .addArgumentValue(InternalSyncHubCommandStep.HUB_PROJECT_ID_ARG, hubProjectId == null ? null : UUID.fromString(hubProjectId));
        liquibaseCommand.execute();
    }
    private boolean dbConnectionNeeded(String command) {
        return !COMMANDS.REGISTER_CHANGELOG.equalsIgnoreCase(command) &&
                !COMMANDS.DEACTIVATE_CHANGELOG.equalsIgnoreCase(command);
    }
    private boolean isLicenseableCommand(String formatValue) {
        return COMMANDS.ROLLBACK_ONE_CHANGE_SET.equalsIgnoreCase(command) ||
                COMMANDS.ROLLBACK_ONE_CHANGE_SET_SQL.equalsIgnoreCase(command) ||
                COMMANDS.ROLLBACK_ONE_UPDATE.equalsIgnoreCase(command) ||
                COMMANDS.ROLLBACK_ONE_UPDATE_SQL.equalsIgnoreCase(command) ||
                (COMMANDS.DIFF.equalsIgnoreCase(command) && formatValue != null && !formatValue.toLowerCase().equals("txt"));
    }
    private void loadChangeSetInfoToMap(Map<String, Object> argsMap) throws CommandLineParsingException {
        argsMap.put("changeSetId", getCommandParam(OPTIONS.CHANGE_SET_ID, null));
        argsMap.put("changeSetAuthor", getCommandParam(OPTIONS.CHANGE_SET_AUTHOR, null));
        argsMap.put("changeSetPath", getCommandParam(OPTIONS.CHANGE_SET_PATH, null));
    }
    private boolean isFormattedDiff() throws CommandLineParsingException {
        String formatValue = getCommandParam(OPTIONS.FORMAT, "txt");
        return !formatValue.equalsIgnoreCase("txt") && !formatValue.isEmpty();