private void copyBusinessData(VCard card, Map<String, Object> contact) {
    for (Title title : card.getTitles()) {
      if (title.getValue() == null) {
        continue;
      }
      // This can loose data but there are only two title types in MS contacts
      if (title.getType() != null && title.getType().equalsIgnoreCase("home")) {
        safeSet("title", card.getTitles(), contact);
      } else {
        safeSet("jobTitle", card.getTitles(), contact);
      }
    }
    // This can loose data but there is only one company name in MS contacts
    for (Organization organization : card.getOrganizations()) {
      for (String orgName : organization.getValues()) {
        contact.put("companyName", orgName);
      }
    }

    for (Expertise expertise : card.getExpertise()) {
      if (expertise.getValue() == null) {
        continue;
      }
      contact.put("profession", expertise.getValue()); // only set first one
      break;
    }
  }
Maps from a VCard to a Microsoft Graph contacts resource as defined by
https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/contact.
extensions/data-transfer/portability-data-transfer-microsoft/src/main/java/org/datatransferproject/transfer/microsoft/transformer/contacts/ToGraphContactTransformer.java