3.1 Ongoing Build and Deployment
Key Takeaways
Configuration such as rules, workflows, and applications is exported as XML and promoted between environments; the -clean option strips id, created, modified, and lastRefresh values.
An IdentityIQ import file can contain many objects plus an ImportAction (merge, include, execute, or logConfig) that controls how they are processed.
The Services Standard Build (SSB) is an Ant-based build that combines the base product, patches, custom XML, and compiled Java into one WAR per environment.
SSB replaces %%TOKEN%% placeholders in custom XML with values from the target environment's env.target.properties file, chosen through SPTARGET or servers.properties.
Importing XML objects does not require a restart, but new Java classes, JARs, or changed .hbm.xml files require a rebuild and application server restart.
Ongoing Build and Deployment
Objective 1.4, understand ongoing build and deployment of IdentityIQ, covers the time after installation: new rules, workflows, applications, and Java code must move safely from a developer sandbox to production. The exam expects you to know what the product offers for moving objects and how SailPoint's standard build tooling packages them.
What Actually Gets Deployed
An IdentityIQ implementation has four kinds of change, and each moves differently:
| Change type | Examples | How it reaches an environment |
|---|---|---|
| XML configuration objects | Rules, workflows, applications, task definitions, forms, email templates, roles | Imported into the database with the console, Import from File, or a build's import step |
| Java code | Custom classes, JARs, plugin classes | Compiled into WEB-INF/classes or WEB-INF/lib; needs an application restart |
| Web and message files | XHTML, JavaScript, CSS, images, message catalogs | Copied into the web application directory; usually needs a restart |
| Schema changes | *Extended.hbm.xml edits | Regenerated with iiq schema, applied to the database, then deployed with a restart |
Moving XML Objects Between Environments
The IdentityIQ console (section 14.3) has the core commands:
exportwrites all objects of one or more classes to a file. For example,export -clean workflows.xml workflowexports every workflow.checkoutwrites a single object, for examplecheckout rule "Cert Signoff Approver" certrule.xml.-cleanremoves values that do not transfer between installations. With no qualifier, it clearsid,created,modified, andlastRefresh. You can also list specific fields.importloads an XML file.import -noidsremoves all ID attributes before parsing.-noroleeventssuppresses role-change events for role propagation.
Removing IDs matters because every database generates its own object IDs. References between objects should use names, which stay the same across environments. An object exported with its development ID can clash in production.
The first tag in an import file tells IdentityIQ how to process it:
<JasperReport>is a Jasper report.<sailpoint>(the IdentityIQ import wrapper) can hold many objects plus anImportActionthat directs processing:merge(combine with an existing object, often used forUIConfigorSystemConfigurationentries),include(pull in another file),execute, orlogConfig.- Anything else is treated as a single object.
Administrators without console access can use Global Settings > Import from File for the same XML import in the UI.
The Services Standard Build (SSB)
SailPoint's Services team publishes the Services Standard Build (SSB), a set of Ant artifacts used on most professional implementations. The companion Services Standard Deployment (SSD) adds deployment helpers. What to know:
- One source tree for all environments. A
basefolder holds the IdentityIQ release (ga), plus anypatchandefixarchives.configholds your custom XML (applications, rules, workflows, task definitions),srcholds Java, andwebholds UI overrides. build.propertiesrecords the IdentityIQ version and patch level to build.- Environment selection. Set the
SPTARGETenvironment variable (for example,sandbox,dev,test, orprod) or map a machine name to an environment inservers.properties. - Tokenization. Custom XML uses placeholders such as
%%AD_HOST%%. At build time, SSB replaces them with values from that environment's<env>.target.propertiesfile, so one rule or application definition can serve every environment.<env>.iiq.propertiessupplies the environment'siiq.properties, and<env>.ignorefiles.propertiesexcludes files that must not ship to that environment. - Outputs.
build cleanremoves old output.build warproducesbuild/classes(compiled Java),build/extract(the expanded application with tokens replaced), andbuild/deploy/identityiq.war. Adeploytarget can expand the WAR into a local IdentityIQ home and run the custom import. The generated import manifest (sp.init-custom.xml) lists the custom objects to load. - Check the extract. A leftover
%%token inbuild/extractshows that a target property was never defined for that environment.
Operating Practices the Exam Rewards
- Keep XML in source control. SailPoint's own console documentation describes storing workflows and rules in source control and importing them with
import. - Restart only when needed. Importing a rule or workflow takes effect without a restart. A new JAR, a compiled class, a changed
.hbm.xmlfile, or a replaced web file needs the application server restarted, and in a cluster every host must get the same build. - Build once per environment and test it. Promote the same source to test and production. Do not hand-edit objects in production's Debug pages, which have no rollback.
- Keep patch levels identical. Because the build includes the base release and patch, every environment should run the same IdentityIQ version and patch level before objects are promoted.
A developer exports a workflow from the development environment to import it into production. Which console option removes the id, created, modified, and lastRefresh values that should not move between installations?
-noroleevents
-clean
-merge
-noids on the export command
In the Services Standard Build, how does one application XML file carry a different Active Directory host name for the test and production environments?
The developer keeps a separate copy of the XML file for each environment in the config folder.
The application definition reads the host name from the Access History database.
The XML uses a %%TOKEN%% placeholder that the build replaces with the value in each environment's target.properties file.
The host name is typed into the Debug pages after every deployment.
Which change requires an application server restart after it is deployed?
Adding a custom Java class compiled into WEB-INF/classes
Importing an updated BeanShell rule from XML
Importing a changed workflow definition
Importing a new email template object
An import file begins with the IdentityIQ import wrapper and contains a UIConfig entry that should be combined with the existing UIConfig rather than replace it. What does the file use?
A JasperReport tag
The -noids option on checkout
A servers.properties mapping
An ImportAction with the merge action
Sections you finish are checked off in the contents.