code: protected ActiveParticipantType addActiveParticipant(String userID, String altUserID, String userName,
                                                           Boolean userIsRequestor, List<CodedValueType> roleIdCodes, String networkAccessPointID, RFC3881NetworkAccessPointTypeCodes networkAccessPointTypeCode) {
          ActiveParticipantType activeParticipantBlock = new ActiveParticipantType();
  
          activeParticipantBlock.setUserID(userID);
          activeParticipantBlock.setAlternativeUserID(altUserID);
          activeParticipantBlock.setUserName(userName);
          activeParticipantBlock.setUserIsRequestor(userIsRequestor);
          if (!EventUtils.isEmptyOrNull(roleIdCodes, true)) {
              activeParticipantBlock.getRoleIDCode().addAll(roleIdCodes);
          }
          activeParticipantBlock.setNetworkAccessPointID(networkAccessPointID);
          if (!EventUtils.isEmptyOrNull(networkAccessPointTypeCode)) {
              activeParticipantBlock.setNetworkAccessPointTypeCode(networkAccessPointTypeCode.getCode());
          }
  
          getAuditMessage().getActiveParticipant().add(activeParticipantBlock);
  
          return activeParticipantBlock;
      }
docs: Create and add an Active Participant block to this audit event message
  
  @param userID The Active Participant's UserID
  @param altUserID The Active Participant's Alternate UserID
  @param userName The Active Participant's UserName
  @param userIsRequestor Whether this Active Participant is a requestor
  @param roleIdCodes The Active Participant's Role Codes
  @param networkAccessPointID The Active Participant's Network Access Point ID (IP / Hostname)
  @param networkAccessPointTypeCode The type code for the Network Access Point ID
  @return The Active Participant block created