private static void updateMetadata(MAPITagPair pair, PropertyValue propertyValue, Metadata metadata) {
        if (pair == null || propertyValue == null) {
            return;
        }
        if (!includeType(propertyValue)) {
            return;
        }
        String key = MAPI.PREFIX_MAPI_PROPERTY + pair.tikaMapiProperty.name;
        Types.MAPIType type = propertyValue.getActualType();
        if (type == Types.TIME || type == Types.MV_TIME || type == Types.APP_TIME || type == Types.MV_APP_TIME) {
            Calendar calendar = (Calendar) propertyValue.getValue();
            String calendarString = calendar
                    .toInstant()
                    .truncatedTo(ChronoUnit.SECONDS)
                    .toString();
            metadata.add(key, calendarString);
        } else if (type == Types.BOOLEAN) {
            Boolean val = (Boolean)propertyValue.getValue();
            if (val == null) {
                return;
            }
            metadata.add(key, Boolean.toString(val));
        } else if (! StringUtils.isBlank(propertyValue.toString())) {
            metadata.add(key, propertyValue.toString());
        }

    }
This class extracts mapi properties as defined in the props_table.txt, which was generated from MS-OXPROPS.
For now, this ignores binary and unknown property types.
tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-microsoft-module/src/main/java/org/apache/tika/parser/microsoft/msg/ExtendedMetadataExtractor.java