private static DocRef stringToDocRef(final String serialisedForm) {

        try {
            final String delimiter = String.valueOf(serialisedForm.charAt(0));
            validateDelimiter(serialisedForm, 0, "first", DOCREF_EXAMPLE);

            // Remove the delimiter off the front
            String delimitedValue = serialisedForm.substring(1);

            if (!DOCREF_PATTERN.matcher(delimitedValue).matches()) {
                throw new RuntimeException(LogUtil.message("Expecting [{}] to match [{}]",
                        delimitedValue, DOCREF_PATTERN.pattern()));
            }

            delimitedValue = delimitedValue.replace(DOCREF_PREFIX + "(", "");
            delimitedValue = delimitedValue.replace(")", "");

            final List<String> parts = Splitter.on(delimiter).splitToList(delimitedValue);
            if (parts.size() != 3) {
                throw new RuntimeException(LogUtil.message(
                        "Expecting three parts to a docRef: type, UUID and name. Found {}", parts.size()));
            }

            return DocRef.builder()
                    .type(parts.get(0))
                    .uuid(parts.get(1))
                    .name(parts.get(2))
                    .build();
        } catch (Exception e) {
            throw new RuntimeException(LogUtil.message(
                    "Error de-serialising a docRef from [{}] due to: {}", serialisedForm, e.getMessage()), e);
        }
    }
@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