What is the Ytria automation API?

Go even bigger with your EZ Suite tools—through large-scale repeatable processes.

EZ Suite tools can be automated? Yes!

First introduced in EZ Suite version 12, the Ytria automation API lets you perform large, repetitive tasks quickly and efficiently. EZ Suite 16.5 sees the focus of the command language and the scope of possibilities greatly expanded.

Here's how you can start putting automation to work for you.

Following through this page will help your understanding of what you can do with automation and how you can get started doing it. We’ll also introduce you to some key automation resources you’ll want to keep handy for the future.

First, let’s look at a quick-and-easy script.

Try out the script below in aclEZ with a server already loaded. You’ll get a concise readout of all ACL entries, and their corresponding access levels for all databases on a loaded server.

  • Simply copy/paste the script shown here into any text editor and save it as an XML file.
  • Open aclEZ and load a server into the selection tree. Then, select the option ‘Load Automation File…’ from the Server (or use CTRL+X).
  • Find the file you just saved and click ‘Open.’

That’s all there is to it! You’ll have a complete listing of all databases on the loaded server, as well as all applicable ACL entries grouped by access level and name.

<?xml version="1.0"?>
<ytriaAutomation Application="aclEZ" ApplicationVersion="16.5">

<RemoveAllColumns></RemoveAllColumns>
<Add ColumnID="DB1" Position="1"></Add>
<Add ColumnID="ACL5" Position="1"></Add>
<Add ColumnID="ACL1" Position="1"></Add>

<GroupBy ColumnID="DB1"></GroupBy>
<GroupBy ColumnID="ACL5"></GroupBy>
<GroupBy ColumnID="ACL1"></GroupBy>
<Collapse/>
</ytriaAutomation>

Want to learn more? Start here.

Our automation scripts are written in XML. If you are currently unfamiliar with XML, w3schools.com has some excellent tutorials to help kickstart your understanding.

To learn more about automation itself, visit our “XML Basics” page by clicking the link below. You’ll find simple examples of the types of components found in a good automation script—including their structure and purpose.

Tip: Once you start to get the general idea of what automation is all about, check out some commands that you’ll want to know. Some of the concepts involved require a bit of familiarization, but once you have the knowledge under your belt, large scale operations are a cinch to handle:

Basics

To learn more about automation itself, visit our "XML Basics" page by clicking the link below. You'll find simple examples of the types of components found in a good automation script—including their structure and purpose.

Learn more

Global Actions

This section contains high-level commands used universally across all tools. For example, loading a server or database.

Learn more

Basics

To learn more about automation itself, visit our "XML Basics" page by clicking the link below. You'll find simple examples of the types of components found in a good automation script—including their structure and purpose.

Learn more

Global Actions

This section contains high-level commands used universally across all tools. For example, loading a server or database.

Learn more

Check out the full scope of functionality.

Check out the ever-expanding catalog of functions that you can automate. Some of these command tags will sound familiar, some will seem brand new. A vast amount of possibilities exist. Each tag has it’s own page that contains an explanation of exactly what it will do, an example that puts it in context, and the technical information surrounding its use in a script.

Ytria Automation API Tag Catalog

Check out the ever-expanding catalog of functions that you can automate. Some of these command tags will sound familiar, some will seem brand new.

Drill down into the specifics.

Every product has its own exclusive functions. Click the links below for a direct access to the pages describing the specific action tags that are used to automate the individual products’ functionality.

scanEZ

API tags

aclEZ

API tags

agentEZ

API tags

consoleEZ

API tags

databaseEZ

API tags

replicationEZ

API tags

signEZ

API tags

viewEZ

API tags

designPropEZ

API tags

actionBarEZ

API tags

Let us work for you with these ready-made scripts.

Click below for some working scripts that you can put to work immediately. For your convenience, comments have been included as explanations of key functionalities. Feel free to change the values to meet your needs—when doing so, be sure to keep the Ytria Automation tag specifics in mind to ensure that your scripts function properly.

Search multiple servers for all invalid ACL entries.

This script will automatically search three servers for any and all invalid ACL entries—entries for names not found in the NAB—and then export the results to a per-server report, one Excel file each.

<?xml version="1.0"?>
<ytriaAutomation Application="aclEZ" ApplicationVersion="16.5">

<RemoveAllColumns></RemoveAllColumns>
<Add ColumnID="DB1" Position="1"></Add>
<Add ColumnID="ACL5" Position="1"></Add>
<Add ColumnID="ACL1" Position="1"></Add>

<GroupBy ColumnID="DB1"></GroupBy>
<GroupBy ColumnID="ACL5"></GroupBy>
<GroupBy ColumnID="ACL1"></GroupBy>
<Collapse/>
</ytriaAutomation>
Load a server and export all ACL information.

This script will load all databases on a server of your choice and then export all ACL attributes and roles to an HTML file.

<ytriaAutomation Application="aclEZ" ApplicationVersion="16.5">
<OnError continue="True"></OnError> 
<Echo Mode="False"></Echo>
<!--The variable in the next line will set the server to load. 
Simply change this variable value to accommodate your needs.--> 
<SetVar srv="Enter your server name here."></SetVar> 
<!-- Initialize --> 
<Load Server="{%srv%}" select="true"></Load>
<Export Type="FlagsAndRoles">
<SetParam target="ExportToFile" field="FilePath" value="aclEZ_export.html"></SetParam>
<SetParam target="ExportToFile" field="ExportType" value="HTML"></SetParam>
<SetParam target="ExportToFile" field="FileOutput" value="Unicode"></SetParam>
<SetParam target="ExportToFile" field="OpenFileOnceGenerated" value="true"></SetParam>
</Export>
</ytriaAutomation>
Find and report all Mail Owner access levels and various connected properties and settings regarding their permissions across multiple databases on multiple servers.

This script can be used by itself in aclEZ to process a currently opened server, or with the new function found in replicationEZ that lets you launch a script on a selection of servers directly from within the interface. Learn more about this function here.

This script will parse the entire mail directory folder on a given server to find all mail owners set side by side with a selection of key properties and settings that govern access and permissions to their respective mail databases. A report will be generated and exported into an Excel file. Each access level will be reported on its own sheet within the file.

<ytriaAutomation Application="aclEZ" ApplicationVersion="16.5">
<!--This will set the script's behavior when encountering an error. 
In this case, it will continue.-->
<onerror continue="true" ></onerror>

<!--First it is specified that the NAB presence is NOT to be checked and groups are NOT 
to be "expanded."-->
<Option Type="PresenceInNAB" value="false"></Option>
<Option Type="GroupExpander" value="ExpandNone"></Option>
<TreeSelectionLive Value="True"></TreeSelectionLive>
<!--All databases on the current server will be deselected in the tree.-->
<unselect target="tree" server="true"></unselect>

<!--Then the mail directory folder for the current server will be selected.-->
<select target="tree" folder="mail"></select>

<!--The next part of the script defines the actions to be taken within the Audit grid.
The grid layout will be set as stated below.
A Suspend Grid Redraw function is added so the processing will be held off until 
all columns are set.-->
<SuspendRedraw value="true"></SuspendRedraw>

<!--All columns are removed from the main grid in order to prepare for the columns 
that will be added.-->
<RemoveAllcolumns></RemoveAllcolumns>

<!--The grid columns are moved to the first position in reverse order.
The name of the columns are indicated.-->
<Add ColumnID="DB6" Position="1"></Add><!-- Catalog Categories -->
<Add ColumnID="DB4" Position="1"></Add><!-- Database Type -->
<Add ColumnID="A9" Position="1"></Add><!-- Replicate or Copy Documents -->
<Add ColumnID="A8" Position="1"></Add><!-- Write Public Documents -->
<Add ColumnID="A7" Position="1"></Add><!-- Read Public Documents -->
<Add ColumnID="A6" Position="1"></Add><!-- Create LS/Java Agents -->
<Add ColumnID="A5" Position="1"></Add><!-- Create Shared Folder/Views -->
<Add ColumnID="A4" Position="1"></Add><!-- Create Private Folders/Views -->
<Add ColumnID="A3" Position="1"></Add><!-- Create Private Agents -->
<Add ColumnID="A2" Position="1"></Add><!-- Delete Documents -->
<Add ColumnID="A1" Position="1"></Add><!-- Create Documents -->
<Add ColumnID="ACL4" Position="1"></Add><!-- Type -->
<Add ColumnID="ACL1" Position="1"></Add><!-- Name -->
<Add ColumnID="DB3" Position="1"></Add><!-- Database File -->
<Add ColumnID="DB2" Position="1"></Add><!-- Database Path -->
<Add ColumnID="STATUS" Position="1"></Add><!-- Status -->
<!--Any residual grouping and sorting is cleared.-->
<Reset></Reset>

<!--A new grouping configuration is set.-->
<GroupBy ColumnID="ACL5"></GroupBy><!-- Access -->
<GroupBy ColumnID="DB7"></GroupBy><!-- Server -->

<!--And a new sorting configuration is set.-->
<Sort columnID="DB2" Ascending="true"></Sort><!-- Database Path -->
<Sort columnID="DB4" Ascending="true"></Sort><!-- Database Type -->
<Sort columnID="DB3" Ascending="true"></Sort><!-- Database Filename -->

<!--A filter is added to isolate only mail owners,and then the grid processing is 
reactivated by turning off
the Suspend Grid Redraw state.-->
<Filter columnID="ACL3" Empty="true"></Filter><!-- Mail Owner -->
<SuspendRedraw value="false"></SuspendRedraw>

<!--The following If condition will test if the main grid has any rows loaded. 
If there are any rows loaded (meaning that Mail Owners were found) the nested 
child actions 
will be carried out.-->
<if target="Grid" test="VisibleRowsCount" Mode="GreaterThan" Value="0">

<!--The following If condition declares that if this script is not being used in a 
loop, the Excel file will be opened as soon as it is generated.
This can't be done if a loop is being run since the Excel file still may need 
to be worked on with the results of another server (depending on what you need
to do). Keep in mind that we can't set an If condition with a SetParam value, 
hence the use of this variable.
The variable is initialised first, and it will be changed if not in a loop.-->
<SetVar vOpenExcelFile="False"></SetVar>
<if target="var" test="{%ListSize%}" mode="Equals" Value="">
<SetVar vOpenExcelFile="true"></SetVar>
</if>

<!--Finally, any findings regarding the databases and their respective mail owners, 
and the rights those mail owners hold, will be exported. 
Note that this report will be generated in the same location that this file
is being run from.-->
<Export>
<SetParam field="FilePath" value="{%CurFilePath%}report_aclEZ.xlsx"></SetParam>
<SetParam field="SelectedRowsOnly" value="false"></SetParam>
<SetParam field="ExportType" value="Excel"></SetParam>
<SetParam field="Mode" value="AppendRows"></SetParam>
<SetParam field="ExcelSheetName" value="Email Owner Access"></SetParam>
<SetParam field="OpenFileOnceGenerated" value="{%vOpenExcelFile%}"></SetParam>
</Export> 
</if>
</ytriaAutomation>
Create a new item across all documents in a specific category—and across multiple databases.

This script can be used by itself in scanEZ to process a currently opened database, or with the new function found in databaseEZ that lets you launch a script on a selection of databases directly from within the interface. Learn more about this function here.

Small in size, yet very flexible in where you can take it, this script will simply select a category of documents and create a new item across all documents within that focused selection.

<?xml version="1.0" encoding="UTF-8"?>
<ytriaAutomation Application="scanEZ" ApplicationVersion="16.5" Version="1.0">

<!--The following three lines let you specify the name and value of the item to be added, 
as well as the document category whose documents the item will be deployed to. 
Simply enter your desired values where indicated.-->
<SetVar ItemToAdd="Enter your value here"></SetVar>
<SetVar ItemValue="Enter your value here"></SetVar>
<SetVar DocumentCategory="Enter your value here"></SetVar>

<!--The following Expand/Focus sequence will allow the focus to be placed on the documents 
within the selection tree category specified.-->
<Expand target="tree" category="Documents" type="{%DocumentCategory%}"></Expand>
<focus target="tree" category="Documents" type="{%DocumentCategory%}"></focus>

<!--The CreateItem script block is where we define the item to be added. If the item already 
exists, it will not create a new one, instead it will skip the document and move on to the 
next. In this particular case, the item added will be a Text item that will use the name 
and value defined in the beginning of the script.-->
<CreateItem OnExisting="skip">
<SetParam field="TypeList" value="Text"></SetParam>
<SetParam field="FieldName" value="{%ItemToAdd%}"></SetParam>
<SetParam field="FieldValue" value="{%ItemValue%}"></SetParam>
<SetParam field="IsProtected" value="true"></SetParam>
</CreateItem>
</ytriaAutomation>
Find all documents that match a given formula across a selection of databases, and export the findings into an Excel file.

This script can be used by itself in scanEZ to process a currently opened database, or with the new function found in databaseEZ that lets you launch an automation script on a selection of databases directly from within the interface. Learn more about this function here.

This intermediate script allows you to specify desired values in the beginning of the script using variables, minimizing any changes to the body of the script itself. This script will search a selection of databases for all the documents that match a defined formula. The name of the database that they are found in, as well as their UNIDs, will be exported into an Excel report.

<?xml version="1.0"?>
<ytriaAutomation Application="aclEZ" ApplicationVersion="16.5">

<RemoveAllColumns></RemoveAllColumns>
<Add ColumnID="DB1" Position="1"></Add>
<Add ColumnID="ACL5" Position="1"></Add>
<Add ColumnID="ACL1" Position="1"></Add>

<GroupBy ColumnID="DB1"></GroupBy>
<GroupBy ColumnID="ACL5"></GroupBy>
<GroupBy ColumnID="ACL1"></GroupBy>
<Collapse/>
</ytriaAutomation>
Find and report all scheduled agents that have and have not run on a given server and create a concise report of agents in both conditions.

This script can be used by itself in scanEZ to process a currently opened database, or with the new function found in databaseEZ that lets you launch an automation script on a selection of databases directly from within the interface. Learn more about this function here.

This intermediate script allows you to specify desired values in the beginning of the script using variables, minimizing any changes to the body of the script itself. This script will search a selection of databases for all the documents that match a defined formula. The name of the database that they are found in, as well as their UNIDs, will be exported into an Excel report.

<ytriaAutomation Application="agentEZ" ApplicationVersion="16.5">
<!--This will set the script's behavior when encountering an error. 
In this case, it will continue.-->
<onerror continue="true" ></onerror>

<!--At this point, we don't want to automatically load the detailed agent information. 
This will set it as "false". -->
<Option Type="AutoLoadDetailedAgentInfo" value="False"></Option>

<!--This will allow the automatic Check Presence in NAB feature to be carried out on 
the agent signer for each agent loaded.-->
<Option Type="PresenceInNAB" value="true"></Option>

<!--This will set the option to use the Design Collection Note which is a much 
faster loading option.-->
<UseDesignCollection value="true"></UseDesignCollection>

<!--This defines our search as looking only for scheduled agents.-->
<AgentTriggerType value="Scheduled" ></AgentTriggerType>
<!--This will select all databases on the loaded server.-->
<TreeSelectionLive Value="False"></TreeSelectionLive>
<select target="tree" server="true"></select>
<TreeSelectionLive Value="True"></TreeSelectionLive>
<!--The next part of the script will handle the grid layout so the results are presented 
in a clear order. A Suspend Grid Redraw function is added so the processing will 
be held off until all columns are set.-->
<SuspendRedraw value="true"></SuspendRedraw>

<!--All columns are removed from the main grid in order to prepare for the columns that 
will be added.-->
<RemoveAllcolumns></RemoveAllcolumns>

<!--Second, the columns that we want are added back into the first position 
and in reverse order.-->
<Add ColumnID="STATUS_LOAD" Position="1"></Add><!-- Is Agent Fully Loaded? -->
<Add ColumnID="D33" Position="1"></Add><!-- Is background agent disabled on database -->
<Add ColumnID="B6" Position="1"></Add><!-- Comment -->
<Add ColumnID="D3" Position="1"></Add><!-- Database Type -->
<Add ColumnID="R24" Position="1"></Add><!-- Run on week-ends -->
<Add ColumnID="R23" Position="1"></Add><!-- Stop running agent on this date -->
<Add ColumnID="R22" Position="1"></Add><!-- Start running agent on this date -->
<Add ColumnID="R21" Position="1"></Add><!-- Running Interval -->
<Add ColumnID="M13" Position="1"></Add><!-- Signer -->
<Add ColumnID="B5" Position="1"></Add><!-- Last Alias -->
<Add ColumnID="B4" Position="1"></Add><!-- Name -->
<Add ColumnID="D2" Position="1"></Add><!-- Database Filename -->
<Add ColumnID="D1" Position="1"></Add><!-- Database Path -->
<Add ColumnID="L17" Position="1"></Add><!-- Last Run Duration -->
<Add ColumnID="L15" Position="1"></Add><!-- Last Run Start Date -->
<Add ColumnID="STATUS" Position="1"></Add><!-- Status -->

<!--Then, all groupings are removed.-->
<UngroupAll></UngroupAll>

<!--And we will set a new grouping configuration.-->
<GroupBy ColumnID="D46"></GroupBy><!-- Server -->
<GroupBy ColumnID="R9"></GroupBy><!-- Run On -->
<GroupBy ColumnID="R12"></GroupBy><!-- Agent Schedule -->

<!--Also, a new sorting configuration is set.-->
<Sort columnID="L17" Ascending="false"></Sort><!-- Last Run Duration -->
<Sort columnID="D1" Ascending="true"></Sort><!-- Database Path -->
<Sort columnID="D3" Ascending="true"></Sort><!-- Database Type -->
<Sort columnID="D2" Ascending="true"></Sort><!-- Database Filename -->
<!--All existing filters are cleared, and then the grid processing is reactivated 
by turning off the Suspend Grid Redraw state.-->
<ClearFilters></ClearFilters>
<SuspendRedraw value="false"></SuspendRedraw>

<!--Note that the agent details don't need to be loaded in this situaiton, as this info is 
provided without a full information load.-->
<Filter columnID="R8" Value="checked"></Filter><!-- Enable -->

<!--The following If condition declares that if something is found (and thus making
the grid count greater than 0), the nested child actions will be carried out.-->
<if target="Grid" test="VisibleRowsCount" Mode="GreaterThan" Value="0">

<!--All enabled agents will be selected (rows loaded in the grid).-->
<Select lines="all"></Select>

<!--Then, all the detailed agent information is loaded for all selected lines.-->
<LoadMoreInfo></LoadMoreInfo>
<!--A filter is added to find all agents that are enabled and did run correctly.-->
<Filter columnID="L17" Empty="true"></Filter><!-- Last Run Duration not set... -->

<!--These findings can now be exported. Note that this report will be generated 
in the same location that this file is being run from.-->
<Export>
<SetParam field="FilePath" value="report_agentEZ.xlsx"></SetParam>
<SetParam field="SelectedRowsOnly" value="false"></SetParam>
<SetParam field="ExportType" value="Excel"></SetParam>
<SetParam field="Mode" value="AppendRows"></SetParam>
<SetParam field="ExcelSheetName" value="Enabled Scheduled Agents - LAST RUN"></SetParam>
<SetParam field="OpenFileOnceGenerated" value="False"></SetParam>
</Export>

<!--All filters will be cleared from the Last Run Duration column.-->
<ClearFilters columnID="L17"></ClearFilters><!-- Last Run Duration... -->

<!--A filter is then added to find all agents that are enabled, but did not run 
correctly. A small trick is used here: hiding anything that contains a 
":" character (and thus indicating a duration).-->
<Filter columnID="L17" Mode="NotContains" Text=":"></Filter><!-- Last Run Duration... -->

<!--The following If condition declares that if this script is not being used in a
loop, the Excel file will be opened as soon as it is generated. This can't be done 
if a loop is being run since the Excel file still may need to be worked on with the
results of another server (depending on what you need to do).
Keep in mind that we can't set an If condition with a SetParam value,
hence the use of this variable.
The variable is initialised first, and it will be changed if not in a loop.-->
<SetVar vOpenExcelFile="False"></SetVar>
<if target="var" test="{%ListSize%}" mode="Equals" Value="">
<SetVar vOpenExcelFile="true"></SetVar>
</if>

<!--Finally, any findings regarding agents that did not run can be exported. 
Note that this report will be generated in the same location that this file 
is being run from.-->
<Export>
<SetParam field="FilePath" value="{%CurFilePath%}report_agentEZ.xlsx"></SetParam>
<SetParam field="SelectedRowsOnly" value="false"></SetParam>
<SetParam field="ExportType" value="Excel"></SetParam>
<SetParam field="Mode" value="AppendRows"></SetParam>
<SetParam field="ExcelSheetName" value="DID NOT RUN"></SetParam>
<SetParam field="OpenFileOnceGenerated" value="{%vOpenExcelFile%}"></SetParam>
</Export>
</if>

</ytriaAutomation>
Find multiple different types of profile documents and create reports of each different type found.

This script can be used by itself in scanEZ to process a currently opened database, or with the new function found in databaseEZ that lets you launch an automation script on a selection of databases directly from within the interface. Learn more about this function here.

This advanced script will iterate over a List containing different user-definable profile document names, and, for each given name, conduct a regex search to find the profile documents that contain a matching name. A multi-faceted report containing a full breakdown of all the items and their values within each document will be exported to an Excel file; each document name's search results will be placed in its own page in the file.

<ytriaAutomation Application="agentEZ" ApplicationVersion="16.5">
<!--This will set the script's behavior when encountering an error. 
In this case, it will continue.-->
<onerror continue="true" ></onerror>

<!--At this point, we don't want to automatically load the detailed agent information. 
This will set it as "false". -->
<Option Type="AutoLoadDetailedAgentInfo" value="False"></Option>

<!--This will allow the automatic Check Presence in NAB feature to be carried out on 
the agent signer for each agent loaded.-->
<Option Type="PresenceInNAB" value="true"></Option>

<!--This will set the option to use the Design Collection Note which is a much 
faster loading option.-->
<UseDesignCollection value="true"></UseDesignCollection>

<!--This defines our search as looking only for scheduled agents.-->
<AgentTriggerType value="Scheduled" ></AgentTriggerType>
<!--This will select all databases on the loaded server.-->
<TreeSelectionLive Value="False"></TreeSelectionLive>
<select target="tree" server="true"></select>
<TreeSelectionLive Value="True"></TreeSelectionLive>
<!--The next part of the script will handle the grid layout so the results are presented 
in a clear order. A Suspend Grid Redraw function is added so the processing will 
be held off until all columns are set.-->
<SuspendRedraw value="true"></SuspendRedraw>

<!--All columns are removed from the main grid in order to prepare for the columns that 
will be added.-->
<RemoveAllcolumns></RemoveAllcolumns>

<!--Second, the columns that we want are added back into the first position 
and in reverse order.-->
<Add ColumnID="STATUS_LOAD" Position="1"></Add><!-- Is Agent Fully Loaded? -->
<Add ColumnID="D33" Position="1"></Add><!-- Is background agent disabled on database -->
<Add ColumnID="B6" Position="1"></Add><!-- Comment -->
<Add ColumnID="D3" Position="1"></Add><!-- Database Type -->
<Add ColumnID="R24" Position="1"></Add><!-- Run on week-ends -->
<Add ColumnID="R23" Position="1"></Add><!-- Stop running agent on this date -->
<Add ColumnID="R22" Position="1"></Add><!-- Start running agent on this date -->
<Add ColumnID="R21" Position="1"></Add><!-- Running Interval -->
<Add ColumnID="M13" Position="1"></Add><!-- Signer -->
<Add ColumnID="B5" Position="1"></Add><!-- Last Alias -->
<Add ColumnID="B4" Position="1"></Add><!-- Name -->
<Add ColumnID="D2" Position="1"></Add><!-- Database Filename -->
<Add ColumnID="D1" Position="1"></Add><!-- Database Path -->
<Add ColumnID="L17" Position="1"></Add><!-- Last Run Duration -->
<Add ColumnID="L15" Position="1"></Add><!-- Last Run Start Date -->
<Add ColumnID="STATUS" Position="1"></Add><!-- Status -->

<!--Then, all groupings are removed.-->
<UngroupAll></UngroupAll>

<!--And we will set a new grouping configuration.-->
<GroupBy ColumnID="D46"></GroupBy><!-- Server -->
<GroupBy ColumnID="R9"></GroupBy><!-- Run On -->
<GroupBy ColumnID="R12"></GroupBy><!-- Agent Schedule -->

<!--Also, a new sorting configuration is set.-->
<Sort columnID="L17" Ascending="false"></Sort><!-- Last Run Duration -->
<Sort columnID="D1" Ascending="true"></Sort><!-- Database Path -->
<Sort columnID="D3" Ascending="true"></Sort><!-- Database Type -->
<Sort columnID="D2" Ascending="true"></Sort><!-- Database Filename -->
<!--All existing filters are cleared, and then the grid processing is reactivated 
by turning off the Suspend Grid Redraw state.-->
<ClearFilters></ClearFilters>
<SuspendRedraw value="false"></SuspendRedraw>

<!--Note that the agent details don't need to be loaded in this situaiton, as this info is 
provided without a full information load.-->
<Filter columnID="R8" Value="checked"></Filter><!-- Enable -->

<!--The following If condition declares that if something is found (and thus making
the grid count greater than 0), the nested child actions will be carried out.-->
<if target="Grid" test="VisibleRowsCount" Mode="GreaterThan" Value="0">

<!--All enabled agents will be selected (rows loaded in the grid).-->
<Select lines="all"></Select>

<!--Then, all the detailed agent information is loaded for all selected lines.-->
<LoadMoreInfo></LoadMoreInfo>
<!--A filter is added to find all agents that are enabled and did run correctly.-->
<Filter columnID="L17" Empty="true"></Filter><!-- Last Run Duration not set... -->

<!--These findings can now be exported. Note that this report will be generated 
in the same location that this file is being run from.-->
<Export>
<SetParam field="FilePath" value="report_agentEZ.xlsx"></SetParam>
<SetParam field="SelectedRowsOnly" value="false"></SetParam>
<SetParam field="ExportType" value="Excel"></SetParam>
<SetParam field="Mode" value="AppendRows"></SetParam>
<SetParam field="ExcelSheetName" value="Enabled Scheduled Agents - LAST RUN"></SetParam>
<SetParam field="OpenFileOnceGenerated" value="False"></SetParam>
</Export>

<!--All filters will be cleared from the Last Run Duration column.-->
<ClearFilters columnID="L17"></ClearFilters><!-- Last Run Duration... -->

<!--A filter is then added to find all agents that are enabled, but did not run 
correctly. A small trick is used here: hiding anything that contains a 
":" character (and thus indicating a duration).-->
<Filter columnID="L17" Mode="NotContains" Text=":"></Filter><!-- Last Run Duration... -->

<!--The following If condition declares that if this script is not being used in a
loop, the Excel file will be opened as soon as it is generated. This can't be done 
if a loop is being run since the Excel file still may need to be worked on with the
results of another server (depending on what you need to do).
Keep in mind that we can't set an If condition with a SetParam value,
hence the use of this variable.
The variable is initialised first, and it will be changed if not in a loop.-->
<SetVar vOpenExcelFile="False"></SetVar>
<if target="var" test="{%ListSize%}" mode="Equals" Value="">
<SetVar vOpenExcelFile="true"></SetVar>
</if>

<!--Finally, any findings regarding agents that did not run can be exported. 
Note that this report will be generated in the same location that this file 
is being run from.-->
<Export>
<SetParam field="FilePath" value="{%CurFilePath%}report_agentEZ.xlsx"></SetParam>
<SetParam field="SelectedRowsOnly" value="false"></SetParam>
<SetParam field="ExportType" value="Excel"></SetParam>
<SetParam field="Mode" value="AppendRows"></SetParam>
<SetParam field="ExcelSheetName" value="DID NOT RUN"></SetParam>
<SetParam field="OpenFileOnceGenerated" value="{%vOpenExcelFile%}"></SetParam>
</Export>
</if>

</ytriaAutomation>
Record your actions to scripts with the powerful new Automation Recorder.

An all-new Automation Recorder takes performance optimization to another level by letting you record and "replay" actions you've performed in the EZ Suite tools. Simply hit Record at the beginning of your process, do your work, and the recorder will save the steps in an independent automation file that can be either recalled at a later time "as is," or modified to fit your needs.

Build your automation lists fast with the 'Create Automation List from Selection' feature.

Thanks to the new Create Automation List from Selection function, you can quickly "export" a selection of entries to a properly formatted List that can be used in an automation script Loop.