This system may contain and is approved up to Controlled Unclassified Information (CUI)

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
ConfiForms Form Definition
additionalFormAdminsWEB-DEV
hideAdminUItrue
formNameRequestorIdentify
autoDeletetrue
bypassAttachmentCreatePermissiontrue
secureStoragetrue
saveButtonLabelSubmit
readonlyAfterRegistrationtrue
showOnlyOwnRecordstrue


Field Definitions: This is the area where you define the fields 

-----------------------------------------------------------------------------------

Captcha Access Section

CaptchaVerifiedComplete the CAPTCHA to Submitcaptchatrue



-----------------------------------------------------------------------------------

Requestor Identify Section

Enter your First NameFirstNameFirst Nametexttrue

Middle InitialMiddleInitialMiddle Initial text

Last NameLastNameLast Nametexttrue

Email AddressEmailEmail Addresstexttrue

(XXX) XXX-XXXXPhoneNumbertruePhone Numbertexttrue^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$

EntityTypeRequestor Entity Typefalse[USMil=US Military (Active Duty, National Guard, Reserver)|USGS=US DoD Civilian (GS)|USSeta=US DoD SETA|USDoDCtr=US DoD Contractor/Subcontractor|]Please Select One falseradio_group


Hidden field and rule for normalizing the phone number

PhoneNumberFormattedPhoneNumberFormattedtext

setPhoneNumberValue(formName, formId)Run custom JavaScripttruePhoneNumber

-----------------------------------------------------------------------------------

DoD Organizational Affiliation Section

Us DOD Activity Code

US DoD Activity CodeOrgAffiliationUS DoD Activity Codetext


DoD Contractor  Additional Fields

OrganizationOrgNameOrganizationtext

OrgAddress1Address Line 1text


OrgCityCitytext

OrgStateStatetext


Rules to Hide and Show addition fields


!EntityType:USDoDCtrOrgName, OrgAddress1, OrgAddress2, OrgCity, OrgStateHide containerEntityType#contractorAffiliationtrue

!(EntityType:USMil OR EntityType:USGS OR EntityType:USSeta)OrgAffiliationHide containerEntityType#propertrue

EntityType:USDoDCtr OR EntityType:USMil OR EntityType:USGS OR EntityType:USSetaOrgAffiliationHide containerEntityType#affiliationPlaceholdertrue

 ----------------------------------------------------------------------------------

Sponsoring Activity Section

SponsActivitySponsoring Activityfalse[ALFCMC/WNS MAF DMO PMO=ALFCMC/WNS MAF DMO PMO|AMC/A3TD MAF DMO=AMC/A3TD MAF DMO|A3/A3TA - AMC/A3TR C-17=A3/A3TA - AMC/A3TR C-17|A3/A3TK - AMC/A3TR KC-135=A3/A3TK - AMC/A3TR KC-135|AMC/A3TA C-130J=AMC/A3TA C-130J|A3/A3TA C-5=A3/A3TA C-5|A3/A3TK KC-56=A3/A3TK KC-46|]selecttrue



------------------------------------------------------------------------------------

Multi Factor Authentication type


MultiFactorMulti-Factor Authentication Typefalse[CAC=CAC|DUOSOFT=Duo Mobile App|DUOHARD=Due Hard Token|]selecttrue


--------------------------------------------------------------------------------------

CAC Fields

fillCacInfoCollect user information from CACcheckbox

Not startedcacFetchStatusCAC Information Collection StatusNot Startedread_only

|subject|undefinedcacSubjectCAC Subjecthttps://clientcert.memorsolutions.com/client-cert-apitext

cacJSONCAC JSONtextarea



MultiFactor:CACShow containerMultiFactor#cacInfoCollectiontrue

fillCacInfo:truegetCacInfo(formName,formId)Run custom JavaScripttruefillCacInfo

fillCacInfo:falsecfResetValue(formId,'cacSubject');cfResetValue(formId,'cacJSON');cfSetValue(formId,'cacFetchStatus', 'Not started')Run custom JavaScriptfillCacInfo



--------------------------------------------------------------------------------------

Cybersecurity Training Certificate Section


CyberCertCybersecurity Training CertificateUpload Cybersecurity Training Certificate Herefile


------------------------------------------------------------------------------------

IP Catcher

IPCatcherIP Addresstrueip



 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Below is where the Fields are shown on the page. 

RequestorIdentifyYou MAF DMO Account request has been submittd. Thank you for your interest in becoming a part of the MAF DMO community. Our support team will route your request for verification of itentity and approval by the respective sponsor. This process normally take 2 business days, but may be longer in certain circumstances. Our team will reach out to you via the registered email or phone number for any further communication.trueEmbeddedPlease confirm that you are ready to submit your request.#main-formRequestor Identify

 FirstNametrueINLINE

 MiddleInitialtrueINLINE

 LastNametrueINLINE

PhoneNumbertrueINLINE

EmailtrueINLINE  

EntityTypetrueINLINE

affiliationPlaceholderaffiliationPlaceholderOrganizational Affiliation


properproperDoD Organizational Affiliation

OrgAffiliationtrue

contractorAffiliationcontractorAffiliationDoD Contractor Organizational Affiliation

Organization NameOrgNametrue

 Address OrgAddress1true 

CityOrgCitytrue

StateOrgStatetrue


Sponsoring Activity

SponsActivitytruetrue

Multi-Factor Authentication Type

Access to the MAF DMO site requires multi-factor authentication (MAF). We support 2 methods to satisfy this requirement:

  1. Authentication using a DoD issued Common Access Card (CAC)
  2. Authentication using username and password, augmented by a second factor using Duo. Duo supports authentication using push verification or one-time passcode (OTP) using the Duo mobile app. Alternatively, Duo supports hardware tokens.

When electing which method to chose below, consider the locations and system you expect to access the web site from, and select the method that will best support access from that environemnt. (e.g. if you expect to require access the website from a location where you are unable to take you cell phone, you must elect ether CAC or Duo Hard Token).

MultiFactortruetrue

cacInfoCollection


In order to complete your request for using CAC based MFA, we must collect information from it that will be used to create your account. Please insert your CAC into the reader and then click the checkbox below. This will prompt you to select your certificate and enter your PIN. Do not submit your request until the "Status" field indicates success. If the status field indicates failure, you may uncheck and recheck the box to attempt again. If you are unable to successfully retrieve the CAC user info using this form, contact the MAF DMO O&I contractor at mafdmo-it-support@hii-tsd.com for further assistance. 

fillCacInfotrue     cacFetchStatustrue




Cyber Security Training Certificate

Access to the MAF DMO website requires verification that you have completed cyber security training, such as the DISA Cyber Awareness Challenge or equivalent corporate training. This training must have been completed within the last 12 months. Continued access to the MAF DMO web site will require maintaining cyber security training annually.


If you are able, uploading your cyber security training certificate here now will help expedit the process of verifying your eligibility for access to the MAF DMO Web site.

No cyber security certificate file has been uploaded yet.CyberCert



captcha-boxCAPTCHA Verification

CaptchaVerifiedtrue

HTML
<script>
function formatPhoneNumber(phoneNumberString) {
  var match = phoneNumberString.match(
    /^\s*(?:\+?(\d{1,3}))?[-. (]*(\d{3})[-. )]*(\d{3})[-. ]*(\d{4})(?: *x(\d+))?\s*$/,
  );
  if (match) {
    return `${match[1] ? '+' + match[1] + ' ' : ''}(${match[2]}) ${match[3]}-${match[4]}`;
  }
  return '';
}

function setPhoneNumberValue(formName, formId) {
  AJS.$(formName)
    .find('#i_PhoneNumberFormatted')
    .val(formatPhoneNumber(AJS.$(formName).find('#i_PhoneNumber').val()));
}

AJS.$('#rw_search_container').hide();
</script>
HTML
<script>
const getCacURL = 'https://clientcert.secure.mafdmo.com/client-cert-api';

async function fetchCacInfo() {
  let done = false;
  let fetchResult = { cacInfo: undefined, retryCount: 0 };

  console.log('Starting fetch operation some more...');

  while (!done && fetchResult.retryCount < 10) {
    console.log(`Fetching CAC info: ${fetchResult.retryCount}`);

    const response = await fetch(getCacURL, {
      credentials: 'include',
      mode: 'cors',
    }).catch((reason) => {
      console.error('fetch() promise failed:');
      console.error(reason);
      return undefined;
    });

    if (response) {
      await response
        .json()
        .then((value) => {
          fetchResult = { ...fetchResult, cacInfo: value };
          const cacInfoStr = JSON.stringify(value, null, 2);
          console.log('cacInfo:');
          console.log(cacInfoStr);
          done = true;
        })
        .catch((reason) => {
          console.error('response.json() promise failed:');
          console.error(reason);
        });
    }

    fetchResult.retryCount++;
  }

  if (!done) {
    console.log(`Fetch not done after ${fetchResult.retryCount} retries`);
  }

  console.log(JSON.stringify(fetchResult, null, 2));

  return fetchResult;
}

async function getCacInfo(formName, formId) {
  if (!formName) return;

  let fetchResult;

  cfSetValueWithEventPropagation(formId, 'cacFetchStatus', 'Fetching user information from CAC...');

  try {
    fetchResult = await fetchCacInfo();
  } catch (e) {
    cfSetValueWithEventPropagation(formId, 'cacFetchStatus', 'Failure accessing CAC certificate.');
    console.error('Error: ');
    console.error(JSON.stringify(e, null, 2));
    return;
  }

  console.log('fetchResult:');
  console.log(JSON.stringify(fetchResult, null, 2));

  if (fetchResult.cacInfo !== undefined) {
    cfSetValueWithEventPropagation(formId, 'cacSubject', fetchResult.cacInfo.subject);
    cfSetValueWithEventPropagation(formId, 'cacJSON', JSON.stringify(fetchResult.cacInfo, null, 2));
    cfSetValueWithEventPropagation(
      formId,
      'cacFetchStatus',
      'CAC user info successfully retrieved.',
    );
  } else {
    cfSetValueWithEventPropagation(
      formId,
      'cacFetchStatus',
      `Failure retrieving CAC information after ${fetchResult.retryCount} tries`,
    );
  }
}

</script>