Tuple2<ConfigProperty, Boolean> decorateDbConfigProperty(final ConfigProperty dbConfigProperty,
                                                             final Map<PropertyPath, Prop> propertyMap) {
        Objects.requireNonNull(dbConfigProperty);

        LOGGER.debug("decorateDbConfigProperty() called for {}", dbConfigProperty.getName());

        final PropertyPath fullPath = dbConfigProperty.getName();

        synchronized (this) {
            ConfigProperty globalConfigProperty = getGlobalProperty(fullPath)
                    .orElseThrow(() ->
                            new UnknownPropertyException(LogUtil.message("No configProperty for {}", fullPath)));

            final Prop prop = propertyMap.get(fullPath);
            if (prop != null) {

                final Optional<String> effectiveValueBefore = globalConfigProperty.getEffectiveValue();
                final SourceType sourceBefore = globalConfigProperty.getSource();

                // Update all the DB related values from the passed DB config prop
                globalConfigProperty.setId(dbConfigProperty.getId());
                globalConfigProperty.setDatabaseOverrideValue(dbConfigProperty.getDatabaseOverrideValue());
                globalConfigProperty.setVersion(dbConfigProperty.getVersion());
                globalConfigProperty.setCreateTimeMs(dbConfigProperty.getCreateTimeMs());
                globalConfigProperty.setCreateUser(dbConfigProperty.getCreateUser());
                globalConfigProperty.setUpdateTimeMs(dbConfigProperty.getUpdateTimeMs());
                globalConfigProperty.setUpdateUser(dbConfigProperty.getUpdateUser());

                final boolean hasChanged = hasEffectiveValueChanged(
                        fullPath, effectiveValueBefore, sourceBefore);

                return Tuple.of(globalConfigProperty, hasChanged);
            } else {
                throw new UnknownPropertyException(LogUtil.message("No prop object for {}", fullPath));
            }
        }
    }
@param dbConfigProperty The config property object obtained from the database
@return The updated typed value from the object model
stroom-config/stroom-config-global-impl/src/main/java/stroom/config/global/impl/ConfigMapper.java