How to import ProvisioningForms file xml

Dear community

I have a question what do i need to import ONLY a ProvisioningForms
I already has the application, but i want to upload the ProvisioningForms via global setting โ†’ import file so i dont do that manually

do i need to add

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sailpoint PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<!--gear -> import file-->
<sailpoint>
<ImportAction name="merge">  --> not sure
<Application connector="sailpoint.connector.JDBCConnector" featuresString="DISCOVER_SCHEMA, PROVISIONING, SYNC_PROVISIONING, DIRECT_PERMISSIONS, SEARCH, ENABLE, UNLOCK" icon="databaseIcon" name="Bug Tracking" profileClass="" type="JDBC">


 <ProvisioningForms>
    <Form name="Bug Tracking" objectType="account" type="Create">
      <Attributes>
        <Map>
          <entry key="pageTitle" value="Bug Tracking"/>
        </Map>
      </Attributes>
      <Section name="Section 1">
        <Field displayName="First Name" name="firstname" required="true" type="string">
          <Script>
            <Source>return identity.firstname;</Source>
          </Script>
        </Field>
        <Field displayName="Last Name" name="lastname" required="true" type="string">
          <Script>
            <Source>return identity.lastname;</Source>
          </Script>
        </Field>
        <Field displayName="Username" name="username" required="true" type="string">
          <Script>
            <Source>return identity.displayName;</Source>
          </Script>
        </Field>
        <Field displayName="Status" name="status" type="string" value="A"/>
        <Field displayName="Locked" name="locked" type="string" value="N"/>
        <Field displayName="Employee ID" name="id" required="true" type="string">
          <Script>
            <Source>return identity.getAttribute("employeeId");</Source>
          </Script>
        </Field>
      </Section>
    </Form>
  </ProvisioningForms>
  <Application/>
  <ImportAction/>
</sailpoint>

Hey @fugitiva, you can import the form separately ( a separate form object) then refer that form in the app.xml. Meaning you can add the reference to the newly imported form in your application.

2 Likes

Hi @aishwaryagoswami thank you for your answer, if I follow your answer:
1.upload the form

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sailpoint PUBLIC "sailpoint.dtd" "sailpoint.dtd">

<sailpoint>
 <Form name="Bug Tracking" objectType="account" type="Create">
      <Attributes>
        <Map>
          <entry key="pageTitle" value="Bug Tracking"/>
        </Map>
      </Attributes>
</Form>
<sailpoint/>
  1. add reference in the application
<Application connector="sailpoint.connector.JDBCConnector" featuresString="DISCOVER_SCHEMA, PROVISIONING, SYNC_PROVISIONING, DIRECT_PERMISSIONS, SEARCH, ENABLE, UNLOCK" icon="databaseIcon" name="Bug Tracking" profileClass="" type="JDBC">
 <ProvisioningForms id=123 name=Bug Tracking>
 <ProvisioningForms/>
<Application/>

Please check the tags in the application, not sure there if this correct, and thanks in advance

It should be something like this.
Form:

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sailpoint PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Form name="Bug Tracking" objectType="account" type="Create">
      <Attributes>
        <Map>
          <entry key="pageTitle" value="Bug Tracking"/>
        </Map>
      </Attributes>
      <Section name="Section 1">
        <Field displayName="First Name" name="firstname" required="true" type="string">
          <Script>
            <Source>return identity.firstname;</Source>
          </Script>
        </Field>
        <Field displayName="Last Name" name="lastname" required="true" type="string">
          <Script>
            <Source>return identity.lastname;</Source>
          </Script>
        </Field>
        <Field displayName="Username" name="username" required="true" type="string">
          <Script>
            <Source>return identity.displayName;</Source>
          </Script>
        </Field>
        <Field displayName="Status" name="status" type="string" value="A"/>
        <Field displayName="Locked" name="locked" type="string" value="N"/>
        <Field displayName="Employee ID" name="id" required="true" type="string">
          <Script>
            <Source>return identity.getAttribute("employeeId");</Source>
          </Script>
        </Field>
      </Section>
    </Form>

Application.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sailpoint PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<app specific tags>
<ProvisioningForms>
<Reference class="sailpoint.object.Form" name="Form Name"/>
</ProvisioningForms>
<Application/>

Hi @aishwaryagoswami thank you for your answer, uploading the form from debug page is not working

also adding the reference in the application fails

@fugitiva Sorry! i was wrong, try this:

application.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sailpoint PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<app specific tags>
<ProvisioningForms>
<Form name="Bug Tracking" objectType="account" type="Create">
<Attributes>
        <Map>
          <entry key="pageTitle" value="Bug Tracking"/>
        </Map>
      </Attributes>
<FormRef name = "Name of your form"/>
</Form>
</ProvisioningForms>
<Application/>

For the Form xml remove the objectType=โ€œaccountโ€

Thank you :), this solve the issue

Hi @aishwaryagoswami do i need to run anything to see the form in the application?
from now it does not show it

@fugitiva i missed the end form tag < / Form> right before the < / ProvisioningForms> tag. Make sure you have added that.
Updated the code snippet

I did it, otherwise give an error, but sitll i dont see the form in the provision policies

It should work, can you try to request something and see if the provisioning policy attributes are populated in the provisioning plan?

no it does not working, so i copy paste the form in the application adding the provisioning tag and restart the server, then i see it


There are two ways to add the provisioning form, the way you have done it now is the most common way. Having the form directly into the app.xml another way is to reference the form.

This is how its defined in community - https://community.sailpoint.com/t5/Technical-White-Papers/Forms-7-0-and-later/ta-p/79191

This sample < Form> definition provides examples of fields slotted into separate sections, assigned to different owners (by value or by script), with an allowed values set, and with a validation script. Application provisioning policies are specified within a < ProvisioningForms> element that wraps all of the specified forms together.

<ProvisioningForms>

<Form name="New Acct Policy" objectType="account" type="Create">

<Field displayName="Name" name="name" required="true" reviewRequired="true" type="string">

<OwnerDefinition value="IIQApplicationOwner"/>

</Field>

<Field displayName="Phone" name="phone" required="true" section="Extra Info" type="string">

<OwnerDefinition value="IIQApplicationOwner"/>

</Field>

<Field displayName="Office Number" name="off_no" required="true" section="" type="integer">

<OwnerDefinition>

<Script>

<Source>return identity.getManager();</Source>

</Script>

</OwnerDefinition>

<ValidationScript>

<Source>

try {

int number=Integer.parseInt(value);

if (number &lt; 100) {

return "Office numbers are all 100 or greater.";

} else{

return null;

}

} catch (NumberFormatException e) {

return "Non-numeric value provided; must be numeric.";

}

 

</Source>

</ValidationScript>

</Field>

<Field displayName="Region" name="region" required="true" type="string">

<AllowedValues>

<String>Americas</String>

<String>EMEA</String>

<String>APAC</String>

</AllowedValues>

</Field>

</Form>

</ProvisioningForms>

A reference to an application provisioning policy form (created in the centralized form UI and pointed to by the application) looks like this in the application definition:

<Application name="UX24ACC" โ€ฆ>

    โ€ฆ

  <ProvisioningForms>

    <Form name="UNIX create form" objectType="account" type="Create">

      <FormRef id="ff808081567f24710156c24f6644053c" name="UNIX create form"/>

    </Form>

  </ProvisioningForms>

</Application>

Not sure why the other way didnt work for you though :frowning:

it was missing the id in the app.xml, thank you for your help :slight_smile:

1 Like

For each xml you want to import, use:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE TAG PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<TAG

where TAG is the tag of the xml element you want to import. The TAG should be an element in the sailpoint.dtd.
So this could be like Form or Application.
For example:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Form PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<Form

If the TAG is sailpoint, than the full path of the elements must be added like:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sailpoint PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<sailpoint>
  <Form

When you want to merge an element (object) use:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sailpoint PUBLIC "sailpoint.dtd" "sailpoint.dtd">
<sailpoint>
	<ImportAction name="merge">
		<TAG

where TAG is again an element from the sailpoint.dtd

(to get the sailpoint.dtd use the iiq console, see IIQ Console Commands)

โ€“ Remold

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.