New Custom Connector Interface
New Custom Connector Interface
Custom Connectors
SailPoint has introduced a new User Interface (UI) for IdentityNow custom connectors which can
dynamically render different elements and attributes. This refactoring of the source configuration is
easier to understand and read, helping administrators take better advantage of the new UI.
In this document, you will learn how to create a new connector UI. The UI is composed of a set of
forms that an administrator interfaces with to configure a source.
For additional information on creating custom connectors, you can also refer to this article: Creating
a custom connector using SailPoint’s OpenConnector framework.
First, we will go through the new UI look and feel and understand its various components. Then,
using an example connector, we will understand various elements and their attributes.
We will also learn how to modify type attributes as and when required.
This sample UI shows the three sections, which are described in more detail below. Sections 1 (Side
Panel) and 2 (Documentation) are consistent in layout and function for all connectors. Section 3, the
Form section, contains attributes that will vary from connector to connector.
3. Form Section
The form section is a UI fill-in form for capturing the administrative input for the backend process.
Prerequisites:
Familiarity with the source configuration development process is a prerequisite for
implementing a connector using the new UI.
Note: The above UI representation of the Base Configuration Menu page is for reference
only. You do not need to provide configuration details of Base Configuration in the source-
config. For more information refer to the note under Menu Element.
Let’s break the above code into pieces to understand more.
For example:
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://www.sailpoint.com/xsd/sailpoint_form_2_0.xsd"
name="ServiceNow" connectorName="ServiceNow-Direct" type="SourceConfig"
directConnect="true" shortDesc="Description_of_connector"
status="released">
Note: Be sure to use sailpoint_form_2_0.xsd to validate the structure and grammar of the
source config. For example:
xmlns="http://www.sailpoint.com/xsd/sailpoint_form_2_0.xsd
Add the BaseConfig element after the Form element to upload a custom connector jar file
for the connector.
For example,
<BaseConfig>
<Field name="fileUpload" maxFiles="6"
supportedExtensions="json,jar,xml,zip,png" type="fileupload" maxSize="1"
validateJSON="false"/>
</BaseConfig>
UI Representation:
The Menu Element
Each Menu item refers to an independent and navigable page containing different
parameters of configuration. Different parameters are defined using the Section element(s).
All the Menu elements together define the entire source configuration UI.
Note: A Menu element must be placed under the root element only i.e. the Form element.
You can include one or more Menu elements per your requirements.
You need to provide all the Menu list items through the source-config, except for the Base
Configuration and Review and Test items.
Base Configuration parameters are common across all the connectors and are generated
dynamically by the new framework and hence need not be provided through the source-
config.
The Review and Test Menu item aggregates and displays information from all the other
Menu items, to review before testing the connection to the native system. This item is
generated by the new framework dynamically, depending upon the configured source.
Therefore, this also does need not to be provided through the source-config.
For example:
<Form>
<Menu name="ConnectionSettings" label="Connection_Settings">
.
.
</Menu>
<Menu name="AggregationSettings" label="Aggregation_Settings">
.
.
</Menu>
<Menu name="AdvancedSettings" label="Advanced_Settings">
.
.
</Menu>
</Form>
For example,
<Section name="authtype" label="Connection_Settings" sectionInfo="Write
about connector in few lines to appear as section information"
<Field name="username" displayName="Username" type="text"
required="true" parentKey="authtype" parentValue="Basic" />
<Field name="password" displayName="Password" type="secret"
required="true" parentKey="authtype" parentValue="Basic" />
</Section>
1. name – the Section(s) name or a key for a corresponding localized message of the
Section.
2. label - the Section(s) label or a key for a corresponding localized message that should
be displayed on the UI.
3. sectionInfo – the summary of the connector on the source list page.
UI representation:
The Field Element
Fields represent different types of UI components depending on the attribute type value.
There can be one or more Field elements within a Section.
For example,
<Field name="username" placeHolder="USERNAME_PLACEHOLDER" type="text"
required="true"/>
1. name – the name of the field or a key for the corresponding localized message.
2. displayName – the label of the field or a key for the corresponding localized message
that should be displayed on the UI.
3. placeHolder - the additional placeholder information for the text field.
UI representation:
The name attribute is used to reference the element in the form data after the form is
submitted. The value of the name must be the same as that of the source/connector’s
configuration name. If it is not added correctly, the source functionality may break. For
example,
displayName
The displayName refers to the name of the fields in the form section. For example,
helpkey
The helpkey attribute refers to the help message for any complex field. If it is provided, then
placeholder text is not needed, and vice versa. For example,
placeholder
The placeholder attribute refers to the placeholder information for the text field. This
information vanishes as soon as the user enters something into the field. For example,
UI representation:
Note: The default max length for the text/URL/email field is 256 characters. If the input is
more than 256 characters, be sure to specify the maxlength explicitly. For example,
<Field name="TestField5" displayName="TestField5" type="text"
required="true" maxlength="999" />
type=”secret”
Represents a text box to read secret string inputs like passwords, access keys, etc. For
example,
<Field name="password" displayName="Password" type="secret"
required="true"/>
UI Representation:
type=”textarea”
Represents an input field for reading long string inputs like descriptions, personalized
feedback, etc. For example,
UI Representation:
type=”number”
Represents a text box to read number inputs. The “min” and “max” attributes indicate the
minimum and maximum values that can be entered. The “step” attribute indicates the
factor by which we can increment/decrement the value using the “up/down” arrow
buttons. For example, step=”2” will allow us to increment/decrement the number by 2 i.e.
2, 4, 6 and so on when the min value is set as 0. For example,
UI Representation:
type=”select”
Note: The options for a select field are configured as a static list. For example, User
configures “field1” of “Menu 1” to save a list/array of cities. A select field named “field2” on
“Menu 2” depends on the saved data of “field1” from “Menu 1” to populate its options.
UI Representation:
type=”radio”
Represents a radio button for choosing one option from a given set of options. For example,
Note: The options for a radio field are configured as a static list.
UI Representation:
type=”typeahead”
Represents a type ahead field for choosing one option from a given set of options. The type
ahead field type should be used when there are a lot of options and you want to make it
easy for the end-users to search for the desired option from the list. For example,
UI Representation:
Note: The options for a typeahead field are configured as a static list.
type=”toggle”
Note: The toggle field type should be used when it has other dependent fields to show/hide.
For example,
UI Representation:
type=”checkbox”
UI Representation:
type=”email”
Represents a field type for email details in XML format. For example,
UI Representation:
Note: The default max length for text/URL/email field is 256 characters. If more than 256
characters are required, be sure to specific a maxlength explicitly. For example,
<Field name="TestField5" displayName="TestField5" type="text"
required="true" maxlength="999" />
type=”url”
Represents a field type for URL details in XML format. For example,
UI Representation:
Note: The default max length for text/URL/email field is 256 characters. If more than 256
characters are required, be sure to specify a maxlength explicitly. For example,
type=”secrettextarea”
Represents the field type for secret text area details in XML format. For example,
UI Representation:
type=”list”
Represents the field type for list details in XML format. For example,
UI Representation:
The source XML representation for the list component in the example above is:
<entry key="TestList">
<value>
<List>
<String>invalid</String>
<String>403</String>
<String>expired</String>
</List>
</value>
</entry>
For example,
If the string is, "For example, filter for removing users with condition: deleted == "true" "
The parentKey and parentValue attributes are used to specify a parent-child relationship
between the two XML elements, where the element specifying them is considered the child.
Use these as a Field element where parentKey specifies the ‘name of the parent element’
and value specifies the parent element’s value.
For example, suppose you want a Section (child) labelled “Connection Credentials” to be
displayed on the UI only if another Field (parent) named “authtype” is set to “Basic”. Here is
an example for this scenario:
<Section ...>
<AllowedValues>
<Option value="Basic" label="BASIC"/>
</AllowedValues>
</Field>
</Section>
...
...
</Section>
Note that the child element has parentKey=”authtype” where “authtype” is the
name of the parent element and parentValue=”Basic” where “Basic” is the parent
element’s value.
The parentKey, parentValue attributes can be used with any type like select, toggle,
radio, etc. to hide/show other Field and Section elements.