docs: private OrgInfo createOrg(String orgName, JsonObject jsonOrg, Map<String, JsonObject> foundCertificateAuthorities) throws NetworkConfigurationException {
  
          String msgPrefix = format("Organization %s", orgName);
  
          String mspId = getJsonValueAsString(jsonOrg.get("mspid"));
  
          OrgInfo org = new OrgInfo(orgName, mspId);
  
          // Peers
          JsonArray jsonPeers = getJsonValueAsArray(jsonOrg.get("peers"));
          if (jsonPeers != null) {
              for (JsonValue peer : jsonPeers) {
                  String peerName = getJsonValueAsString(peer);
                  if (peerName != null) {
                      org.addPeerName(peerName);
                  }
              }
          }
  
          // CAs
          JsonArray jsonCertificateAuthorities = getJsonValueAsArray(jsonOrg.get("certificateAuthorities"));
          if (jsonCertificateAuthorities != null) {
              for (JsonValue jsonCA : jsonCertificateAuthorities) {
  
                  String caName = getJsonValueAsString(jsonCA);
  
                  if (caName != null) {
                      JsonObject jsonObject = foundCertificateAuthorities.get(caName);
                      if (jsonObject != null) {
                          org.addCertificateAuthority(createCA(caName, jsonObject, org));
                      } else {
                          throw new NetworkConfigurationException(format("%s: Certificate Authority %s is not defined", msgPrefix, caName));
                      }
                  }
              }
          }
  
          String adminPrivateKeyString = extractPemString(jsonOrg, "adminPrivateKey", msgPrefix);
          String signedCert = extractPemString(jsonOrg, "signedCert", msgPrefix);
  
          if (!isNullOrEmpty(adminPrivateKeyString) && !isNullOrEmpty(signedCert)) {
  
              PrivateKey privateKey = null;
  
              try {
                  privateKey = getPrivateKeyFromString(adminPrivateKeyString);
              } catch (IOException ioe) {
                  throw new NetworkConfigurationException(format("%s: Invalid private key", msgPrefix), ioe);
              }
  
              final PrivateKey privateKeyFinal = privateKey;
  
              try {
                  org.peerAdmin = new UserInfo(CryptoSuite.Factory.getCryptoSuite(), mspId, "PeerAdmin_" + mspId + "_" + orgName, null);
              } catch (Exception e) {
                  throw new NetworkConfigurationException(e.getMessage(), e);
              }
              org.peerAdmin.setEnrollment(new X509Enrollment(privateKeyFinal, signedCert));
  
          }
  
          return org;
      }