eDocLite Dependency Hierarchy
...
Workflow Component | Naming Convention |
---|---|
Parent Document Type | <process name>.eDoc.ParentDocType |
Child Document Type | <process name>.eDoc.ChildDocType |
eDocLite Form Definition | <process name>.eDoc.Form |
eDocLite Style Definition | <process name>.eDoc.Style |
Rule Attribute | <process name>.eDoc.<rule attribute name>.RuleAttribute |
Rule Template | <process name>.eDoc.<rule template name>.RuleTemplate |
Rule | <process name>.eDoc.<rule name>.Rule |
XML Files | Naming Convention |
Parent Document Type | <process name>.eDoc.ParentDocType.xml |
Child Document Type | <process name>.eDoc.ChildDocType.xml |
eDocLite Form | <process name>.eDoc.Form.xml |
Rule Attributes | <process name>.eDoc.RuleAttributes.xml |
Rule Templates | <process name>.eDoc.RuleTemplates.xml |
Rules | <process name>.eDoc.Rules |
Development Cycle
Phase | Role | Skill Set |
---|---|---|
Model the Business Process | Analyst | Process Modeling |
Model the Form Details | Analyst | Form Prototyping |
Model the Document Workflow | Analyst | Workflow Modeling |
Procure Work Groups |
...
Developer, System Administrator | ||
Create the Parent Document Type | Developer | XML |
Create the Child Document Types | Developer | XML, Workflow Modeling |
Create the eDocLite Form |
...
Developer | HTML & JSP | |
Create Rule Attributes | Developer | XML, Workflow Modeling |
Create Rule Templates | Developer | XML, Workflow Modeling |
Create Rules | Developer | XML, Workflow Modeling |
Implement Workflow Components | Deployer/System Administrator (IET) | |
Simulate the Business Process | QA | Process Modeling, Workflow Modeling |
Create Validation Checklists | QA | Process Modeling, Workflow Modeling |
Sample Business Process Model
...
Sample Document Workflow Model
Element Notation |
---|
...
Element | Ground Notation Rule | |
---|---|---|
Request | The first route node, a.k.a. the start node, in the workflow's route path. This is where the Request Firewall Change document is created by an initiator. | |
Purple "Document" | A node in the route path. Each node represents a point in the business process where a responsible party is viewing (and possibly editing) the Request Firewall Change document. | |
Lavender Parallelogram | A rule template that is applied to each node. Each rule template is associated with a set of rules and rule attributes. | |
Orange Sail | A rule attribute associated with a rule template. | |
Lime Rectangle | The responsible party or parties who take action on a node. | |
Red Arrow | The action that must be taken to get from one node to the next node. | |
Blue Join Line | When connected to a rule attribute, it represents a rule that evaluates that rule attribute | |
Finish | Means the workflow has completed with flying colors. |
Sample Work Groups
Responsible Party | Work Group |
---|---|
Requester | Initiator.Role.RuleAttribute |
Desktop Services | ucd.IET.DES.DevelopmentSupport.WorkGroup |
Firewall Policy Group | ucd.IET.AppDev.FirewallPolicyGroup.Workgroup |
Firewall Gatekeeper | ucd.IET.DCCS.FirewallSysAdmin.Workgroup |
Super User Workgroup | ucd.IET.AppDev.KualiRice.SysAdmin.Workgroup |
Default Exception Workgroup | ucd.IET.AppDev.KualiRice.SysAdmin.Workgroup |
Responsibility Matrix:
Node | Responsible Party | Responsibility Condition(s) | Action Requested |
---|---|---|---|
Request | Initiator.Role.RuleAttribute (whoever creates the document) | none | SUBMIT |
Review Current Configuration | ucd.IET.DES.DevelopmentSupport.WorkGroup | none | APPROVE |
Initial Approval | ucd.IET.AppDev.FirewallPolicyGroup.Workgroup | non-urgent request | APPROVE |
Initial Approval | ucd.IET.DCCS.FirewallSysAdmin.Workgroup | urgent request | APPROVE |
Final Approval | ucd.IET.AppDev.FirewallPolicyGroup.Workgroup | non-urgent request | APPROVE |
Final Approval | ucd.IET.DCCS.FirewallSysAdmin.Workgroup | urgent request | APPROVE |
Acknowledge Configuration | Initiator.Role.RuleAttribute | none | ACKNOWLEDGE |
...
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?> <data xmlns="ns:workflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ns:workflow resource:WorkflowData"> <documentTypes xmlns="ns:workflow/DocumentType" xsi:schemaLocation="ns:workflow/DocumentType resource:DocumentType"> <documentType> <name>RequestFirewallChange.eDoc.ParentDocType</name> <description>Request Firewall Change eDocLite Parent Document Type</description> <label>Request Firewall Change eDocLite Parent Document Type</label> <blanketApprovePolicy>NONE</blanketApprovePolicy> <docHandler>${workflow.url}/EDocLite</docHandler> <active>true</active> <routingVersion>2</routingVersion> </documentType> </documentTypes> </data> |
...
Child Document Type
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?> <data xmlns="ns:workflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ns:workflow resource:WorkflowData"> <documentTypes xmlns="ns:workflow/DocumentType" xsi:schemaLocation="ns:workflow/DocumentType resource:DocumentType"> <documentType> <name>RequestFirewallChange.eDoc.ChildDocType</name> <parent>RequestFirewallChange.eDoc.ParentDocType</parent> <description>Request Firewall Change eDocLite Child Document Type</description> <label>Request Firewall Change eDocLite Child Document Type</label> <postProcessorName>edu.iu.uis.eden.edl.EDocLitePostProcessor</postProcessorName> <superUserWorkgroupName>ucd.IET.AppDev.KualiRice.SysAdmin.Workgroup</superUserWorkgroupName> <defaultExceptionWorkgroupName>ucd.IET.AppDev.KualiRice.SysAdmin.Workgroup</defaultExceptionWorkgroupName> <docHandler>${workflow.url}/EDocLite</docHandler> <active>true</active> <routingVersion>2</routingVersion> <routePaths> <routePath> <start name="Request" nextNode="ReviewCurrentConfiguration" /> <requests name="ReviewCurrentConfiguration" nextNode="InitialApproval" /> <requests name="InitialApproval" nextNode="FinalApproval" /> <requests name="FinalApproval" nextNode="AcknowledgeConfiguration" /> <requests name="AcknowledgeConfiguration" /> </routePath> </routePaths> <routeNodes> <start name="Request"> <activationType>P</activationType> </start> <requests name="ReviewCurrentConfiguration"> <activationType>P</activationType> <ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.RuleTemplate</ruleTemplate> </requests> <requests name="InitialApproval"> <activationType>P</activationType> <ruleTemplate>RequestFirewallChange.eDoc.InitialApproval.RuleTemplate</ruleTemplate> </requests> <requests name="FinalApproval"> <activationType>P</activationType> <ruleTemplate>RequestFirewallChange.eDoc.FinalApproval.RuleTemplate</ruleTemplate> </requests> <requests name="AcknowledgeConfiguration"> <activationType>S</activationType> <ruleTemplate>RequestFirewallChange.eDoc.AcknowledgeConfiguration.RuleTemplate</ruleTemplate> <mandatoryRoute>false</mandatoryRoute> <finalApproval>false</finalApproval> </requests> </routeNodes> </documentType> </documentTypes> </data> |
...
- The eDocLite Form Skeleton
Code Block title RequestFirewallChange.eDoc.Form.xml <?xml version="1.0" encoding="UTF-8"?> <data xmlns="ns:workflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ns:workflow resource:WorkflowData"> <edoclite xmlns="ns:workflow/EDocLite" xsi:schemaLocation="ns:workflow/EDocLite resource:EDocLite"> <edl name="RequestFirewallChange.eDoc.Form" title="Request Firewall Change"> <security /> <createInstructions>** Fields with an asterisk are required.</createInstructions> <instructions>** Fields with an asterisk are required.</instructions> <validations /> <attributes /> ... ... </edl> <style name="RequestFirewallChange.eDoc.Style"> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my-class="xalan://edu.iu.uis.eden.edl.WorkflowFunctions" version="1.0"> <xsl:include href="widgets" /> <xsl:output indent="yes" method="html" omit-xml-declaration="yes" version="4.01" /> <xsl:variable name="actionable" select="/documentContent/documentState/actionable" /> <xsl:variable name="docHeaderId" select="/documentContent/documentState/docId" /> <xsl:variable name="editable" select="/documentContent/documentState/editable" /> <xsl:variable name="globalReadOnly" select="/documentContent/documentState/editable != 'true'" /> <xsl:variable name="docStatus" select="//documentState/workflowDocumentState/status" /> <xsl:variable name="isAtNodeInitiated" select="my-class:isAtNode($docHeaderId, 'Initiated')" /> <xsl:variable name="isPastInitiated" select="my-class:isNodeInPreviousNodeList('Initiated', $docHeaderId)" /> <xsl:variable name="isUserInitiator" select="my-class:isUserInitiator($docHeaderId)" /> <xsl:param name="overrideMain" select="'true'" /> <xsl:template name="mainForm"> <html xmlns=""> <head> <script language="javascript" /> <xsl:call-template name="htmlHead" /> </head> <body onload="onPageLoad()"> <xsl:call-template name="errors" /> <xsl:call-template name="header" /> <xsl:call-template name="instructions" /> <xsl:variable name="formTarget" select="'EDocLite'" /> <form action="{$formTarget}" enctype="multipart/form-data" id="edoclite" method="post" onsubmit="return validateOnSubmit(this)"> <xsl:call-template name="hidden-params" /> <xsl:call-template name="mainBody" /> <xsl:call-template name="notes" /> <br /> <xsl:call-template name="buttons" /> <br /> </form> <xsl:call-template name="footer" /> </body> </html> </xsl:template> <xsl:template name="mainBody"> ... ... </xsl:template> <xsl:template name="nbsp"> <xsl:text disable-output-escaping="yes">&nbsp;</xsl:text> </xsl:template> </xsl:stylesheet> </style> <association> <docType>RequestFirewallChange.eDoc.ChildDocType</docType> <definition>RequestFirewallChange.eDoc.Form</definition> <style>RequestFirewallChange.eDoc.Style</style> <active>true</active> </association> </edoclite> </data>
- Form Definition
Code Block title RequestFirewallChange.eDoc.Form.xml <fieldDef name="dateOfChange" title="Date and Time for Change: MM/DD/YYYY"> <display> <type>text</type> </display> <validation required="true"> <regex>^[0-1]?[0-9](/|-)[0-3]?[0-9](/|-)[1-2][0-9][0-9][0-9]$</regex> <message>Enter a valid date in the format mm/dd/yyyy.</message> </validation> </fieldDef> <fieldDef name="descriptionOfChange" title="Description of the Port Change"> <display> <type>textarea</type> <meta> <name>rows</name> <value>5</value> </meta> <meta> <name>cols</name> <value>60</value> </meta> <meta> <name>wrap</name> <value>hard</value> </meta> </display> <validation required="true"> <message>Enter a description of the port change.</message> </validation> </fieldDef> <fieldDef attributeName="RequestFirewallChange.eDoc.isUrgent.RuleAttribute" name="isUrgent" title="URGENT"> <display> <type>select</type> <values title="NO">NO</values> <values title="YES">YES</values> </display> <validation required="true"> <message>Is this request URGENT?</message> </validation> </fieldDef> <fieldDef name="ingressEgressCharacteristic" title="Ingress/Egress Characteristic"> <display> <type>textarea</type> <meta> <name>rows</name> <value>5</value> </meta> <meta> <name>cols</name> <value>60</value> </meta> <meta> <name>wrap</name> <value>hard</value> </meta> </display> <validation required="true"> <message>Enter the ingress/egress characteristic.</message> </validation> </fieldDef> <fieldDef name="sourceSpecification" title="Source Specification"> <display> <type>textarea</type> <meta> <name>rows</name> <value>5</value> </meta> <meta> <name>cols</name> <value>60</value> </meta> <meta> <name>wrap</name> <value>hard</value> </meta> </display> <validation required="true"> <message>Enter the source specification.</message> </validation> </fieldDef> <fieldDef name="destinationSpecification" title="Destination Specification"> <display> <type>textarea</type> <meta> <name>rows</name> <value>5</value> </meta> <meta> <name>cols</name> <value>60</value> </meta> <meta> <name>wrap</name> <value>hard</value> </meta> </display> <validation required="true"> <message>Enter the destination specification.</message> </validation> </fieldDef> <fieldDef name="termOfRuleChange" title="Term of Rule Change (indefinite or otherwise)"> <display> <type>text</type> <meta> <name>size</name> <value>50</value> </meta> </display> <validation required="true"> <message>Enter term of the rule change.</message> </validation> </fieldDef> <fieldDef name="relatedProject" title="Project Related to Requested Rule(s) Change"> <display> <type>text</type> <meta> <name>size</name> <value>50</value> </meta> </display> <validation required="true"> <message>Enter a related project to the requested rule change.</message> </validation> </fieldDef>
- Form Stylesheet
Code Block title RequestFirewallChange.eDoc.Form.xml <xsl:template name="mainBody"> <table xmlns="" align="center" border="0" cellpadding="0" cellspacing="0" class="bord-r-t" width="80%"> <tr> <td align="left" border="3" class="thnormal" colspan="1"> <br /> <h3> University of California, Davis <br /> eDoclite Tutorial </h3> <br /> </td> <td align="center" border="3" class="thnormal" colspan="2"> <br /> <h2>Request Firewall Change Form</h2> </td> </tr> <tr> <td class="headercell5" colspan="100%"> <b>Request Details</b> </td> </tr> <tr> <td class="thnormal"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'dateOfChange'" /> <xsl:with-param name="renderCmd" select="'title'" /> </xsl:call-template> <font color="#ff0000">*</font> </td> <td class="datacell"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'dateOfChange'" /> <xsl:with-param name="renderCmd" select="'input'" /> <xsl:with-param name="readOnly" select="$isPastInitiated" /> </xsl:call-template> </td> </tr> <tr> <td class="thnormal"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'descriptionOfChange'" /> <xsl:with-param name="renderCmd" select="'title'" /> </xsl:call-template> <font color="#ff0000">*</font> </td> <td class="datacell"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'descriptionOfChange'" /> <xsl:with-param name="renderCmd" select="'input'" /> <xsl:with-param name="readOnly" select="$isPastInitiated" /> </xsl:call-template> </td> </tr> <tr> <td class="thnormal"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'isUrgent'" /> <xsl:with-param name="renderCmd" select="'title'" /> </xsl:call-template> <font color="#ff0000">*</font> </td> <td class="datacell"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'isURgent'" /> <xsl:with-param name="renderCmd" select="'input'" /> <xsl:with-param name="readOnly" select="$isPastInitiated" /> </xsl:call-template> </td> </tr> <tr> <td class="thnormal"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'ingressEgressCharacteristic'" /> <xsl:with-param name="renderCmd" select="'title'" /> </xsl:call-template> <font color="#ff0000">*</font> </td> <td class="datacell"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'ingressEgressCharacteristic'" /> <xsl:with-param name="renderCmd" select="'input'" /> <xsl:with-param name="readOnly" select="$isPastInitiated" /> </xsl:call-template> </td> </tr> <tr> <td class="thnormal"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'destinationSourceSpecification'" /> <xsl:with-param name="renderCmd" select="'title'" /> </xsl:call-template> <font color="#ff0000">*</font> </td> <td class="datacell"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'destinationSourceSpecification'" /> <xsl:with-param name="renderCmd" select="'input'" /> <xsl:with-param name="readOnly" select="$isPastInitiated" /> </xsl:call-template> </td> </tr> <tr> <td class="thnormal"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'termOfRuleChange'" /> <xsl:with-param name="renderCmd" select="'title'" /> </xsl:call-template> <font color="#ff0000">*</font> </td> <td class="datacell"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'termOfRuleChange'" /> <xsl:with-param name="renderCmd" select="'input'" /> <xsl:with-param name="readOnly" select="$isPastInitiated" /> </xsl:call-template> </td> </tr> <tr> <td class="thnormal"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'relatedProject'" /> <xsl:with-param name="renderCmd" select="'title'" /> </xsl:call-template> <font color="#ff0000">*</font> </td> <td class="datacell"> <xsl:call-template name="widget_render"> <xsl:with-param name="fieldName" select="'relatedProject'" /> <xsl:with-param name="renderCmd" select="'input'" /> <xsl:with-param name="readOnly" select="$isPastInitiated" /> </xsl:call-template> </td> </tr> </table> <br xmlns="" /> <xsl:template>
...
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?>
<data xmlns="ns:workflow" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="ns:workflow resource:WorkflowData">
<rules xmlns="ns:workflow/Rule" xsi:schemaLocation="ns:workflow/Rule resource:Rule">
<rule>
<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
<ruleTemplate>RequestFirewallChange.eDoc.ReviewCurrentConfiguration.RuleTemplate</ruleTemplate>
<description>Review Current Configuration Rule</description>
<ignorePrevious>false</ignorePrevious>
<responsibilities>
<responsibility>
<workgroup>ucd.IET.DES.DevelopmentSupport.WorkGroup</workgroup>
<actionRequested>A</actionRequested>
<priority>1</priority>
</responsibility>
</responsibilities>
</rule>
<rule>
<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
<ruleTemplate>RequestFirewallChange.eDoc.InitialApproval.RuleTemplate</ruleTemplate>
<description>Initial Approval By Firewall SysAdmin Rule</description>
<ignorePrevious>false</ignorePrevious>
<ruleExtensions>
<ruleExtension>
<attribute>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</attribute>
<ruleTemplate>RequestFirewallChange.eDoc.InitialApproval.RuleTemplate</ruleTemplate>
<ruleExtensionValues>
<ruleExtensionValue>
<key>isUrgent</key>
<value>YES</value>
</ruleExtensionValue>
</ruleExtensionValues>
</ruleExtension>
</ruleExtensions>
<responsibilities>
<responsibility>
<workgroup>ucd.IET.DCCS.FirewallSysAdmin.Workgroup</workgroup>
<actionRequested>A</actionRequested>
<priority>1</priority>
</responsibility>
</responsibilities>
</rule>
<rule>
<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
<ruleTemplate>RequestFirewallChange.eDoc.InitialApproval.RuleTemplate</ruleTemplate>
<description>Initial Approval By Firewall Policy Group Rule</description>
<ignorePrevious>false</ignorePrevious>
<ruleExtensions>
<ruleExtension>
<attribute>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</attribute>
<ruleTemplate>RequestFirewallChange.eDoc.InitialApproval.RuleTemplate</ruleTemplate>
<ruleExtensionValues>
<ruleExtensionValue>
<key>isUrgent</key>
<value>NO</value>
</ruleExtensionValue>
</ruleExtensionValues>
</ruleExtension>
</ruleExtensions>
<responsibilities>
<responsibility>
<workgroup>ucd.IET.AppDev.FirewallPolicyGroup.Workgroup</workgroup>
<actionRequested>A</actionRequested>
<priority>1</priority>
</responsibility>
</responsibilities>
</rule>
<rule>
<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
<ruleTemplate>RequestFirewallChange.eDoc.FinalApproval.RuleTemplate</ruleTemplate>
<description>Final Approval By Firewall SysAdmin Rule</description>
<ignorePrevious>false</ignorePrevious>
<ruleExtensions>
<ruleExtension>
<attribute>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</attribute>
<ruleTemplate>RequestFirewallChange.eDoc.FinalApproval.RuleTemplate</ruleTemplate>
<ruleExtensionValues>
<ruleExtensionValue>
<key>isUrgent</key>
<value>NO</value>
</ruleExtensionValue>
</ruleExtensionValues>
</ruleExtension>
</ruleExtensions>
<responsibilities>
<responsibility>
<workgroup>ucd.IET.DCCS.FirewallSysAdmin.Workgroup</workgroup>
<actionRequested>A</actionRequested>
<priority>1</priority>
</responsibility>
</responsibilities>
</rule>
<rule>
<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
<ruleTemplate>RequestFirewallChange.eDoc.FinalApproval.RuleTemplate</ruleTemplate>
<description>Final Approval By Firewall Policy Group Rule</description>
<ignorePrevious>false</ignorePrevious>
<ruleExtensions>
<ruleExtension>
<attribute>RequestFirewallChange.eDoc.isUrgent.RuleAttribute</attribute>
<ruleTemplate>RequestFirewallChange.eDoc.FinalApproval.RuleTemplate</ruleTemplate>
<ruleExtensionValues>
<ruleExtensionValue>
<key>isUrgent</key>
<value>YES</value>
</ruleExtensionValue>
</ruleExtensionValues>
</ruleExtension>
</ruleExtensions>
<responsibilities>
<responsibility>
<workgroup>ucd.IET.AppDev.FirewallPolicyGroup.Workgroup</workgroup>
<actionRequested>A</actionRequested>
<priority>1</priority>
</responsibility>
</responsibilities>
</rule>
<rule>
<documentType>RequestFirewallChange.eDoc.ChildDocType</documentType>
<ruleTemplate>RequestFirewallChange.eDoc.AcknowledgeConfiguration.RuleTemplate</ruleTemplate>
<description>Acknowledge Configuration Rule</description>
<ignorePrevious>true</ignorePrevious>
<responsibilities>
<responsibility>
<role>edu.iu.uis.eden.routetemplate.InitiatorRoleAttribute!INITIATOR</role>
<approvePolicy>F</approvePolicy>
<actionRequested>K</actionRequested>
<priority>1</priority>
</responsibility>
</responsibilities>
</rule>
</rules>
</data>
|
...
- Log in as requester1
- Click on EDocLites
- Click Search
- Find the eDocLite whose Definition Name is RequestFirewallChange.eDoc.Form
- Click on Create DocumentHere's the form we built:
- Fill out the form, set URGENT to NO and click route
- Log in as DES1
- Click on Action List
- Find and open the document initiated by requester1. Its status should be ENROUTE
- Click on the document and it should look like so:
Click approve - Login as DCCS1
- Click on Action List. The document should not be in DCCS1's Action List.
- Log in as FPG1
- Click on Action List
- Find and open the document initiated by requester1 and approved by DES1. Its status should be ENROUTE
- Click approve
- Login as DCCS1
- Click on Action List
- Find and open the document initiated by requester1, approved by DES1, and approved by FPG1. Its status should be ENROUTE
- Click approve
- Log in as requester1 again
- Click on Action List
- Find and open the document initiated by requester1, approved by DES1, approved by FPG1, and acknowledged by DCCS1. Its status should be PROCESSED
- Click acknowledge
- Click Document Search
- Find the document again
- Click on the Log iconThe log should like like so:
Validation Checklists
...