code: public void createEnterpriseCustomFieldMap(Props props, Class<?> c)
     {
        byte[] fieldMapData = null;
        for (Integer key : ENTERPRISE_CUSTOM_KEYS)
        {
           fieldMapData = props.getByteArray(key);
           if (fieldMapData != null)
           {
              break;
           }
        }
  
        if (fieldMapData != null)
        {
           int index = 4;
           while (index < fieldMapData.length)
           {
              //Looks like the custom fields have varying types, it may be that the last byte of the four represents the type?
              //System.out.println(ByteArrayHelper.hexdump(fieldMapData, index, 4, false));
              int typeValue = MPPUtility.getInt(fieldMapData, index);
              FieldType type = getFieldType(typeValue);
              if (type != null && type.getClass() == c && type.toString().startsWith("Enterprise Custom Field"))
              {
                 int varDataKey = (typeValue & 0xFFFF);
                 FieldItem item = new FieldItem(type, FieldLocation.VAR_DATA, 0, 0, varDataKey, 0, 0);
                 m_map.put(type, item);
                 //System.out.println(item);
              }
              //System.out.println((type == null ? "?" : type.getClass().getSimpleName() + "." + type) + " " + Integer.toHexString(typeValue));
  
              index += 4;
           }
        }
     }
docs: Create a field map for enterprise custom fields.
  
  @param props props data
  @param c target class