Informed Domino Consolidation for Microsoft Migration

 01:41:34 MIN

Whether you’re moving to another technology platform or simply thinking about upgrading your current one, a thorough evaluation of what you have is a must in order to make an informed decision.

Download to watch later

Ensure success through all migration phases, from planning to the procedure itself

In this webinar, you’ll see how to assess what your environment contains, as well as how to consolidate applications, replicas, and usage and template information. You’ll even see a real-time, application data migration example

  • Managing application properties ranging from the basic to design attributes, as well as those related to security
  • Administering DAOS more efficiently—including gathering data for objects stored, volume of data saved, and more
  • Handling your view and folder index sizes in new and better ways
  • Understanding global database usage patterns, as well as detailed usage information regarding location, templates, ODS, and more
  • Maintaining databases in faster and better ways, all without the server console
  • Discerning storage use through space used percentages
  • Working with little-known properties and settings such as template build information, various encryption statuses, and more

Whip your environment into shape with these scripts

Throughout the webinar, you will see various scripts. We have included them below so you can apply what you learn directly to your own environment. For your convenience, comments have been included as explanations of key functionalities.

Scan all folders in a database and calculate how many documents belong to it

This script will automatically scan for any folders and then use a formula to calculate how many documents belong to it. All findings will be reported to an Excel file. This can be run to process a single database, or multiple databases.

<?xml version="1.0" encoding="UTF-8"?>
<ytriaAutomation Application="scanEZ" ApplicationVersion="16.5" Version="1.0">
<if target="var" test="{%ListSize%}" mode="NotEquals" Value="">
<ExecuteListAction></ExecuteListAction>
</if>
<!--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 enabled mail rules in mail files and report your findings

This script will automatically search a mail file for enabled mail-rule documents. It will then employ formulas to display a custom list of items to explain what each mail rule does. This can be run to process a single database, or multiple databases.

<ytriaAutomation Application="scanEZ" ApplicationVersion="16.5">

<!--This will set the script's behavior when encountering an error. In this case, it will continue.-->
<onerror continue="true" ></onerror>
<!--Use the following variables to adapt the script to your own needs.-->
<!--TO SET :: this is THE FORMULA that will be used. Note that the formula follows the general XML rules of "escaping". -->
<SetVar vSearchFormula="SELECT Form="Mailrule"&Enable="1""></SetVar>
<!--TO SET :: This is the item to use as a main "key" for the report.-->
<SetVar vItemToUseAsKey="ActionList"></SetVar>
<!--This script block will perform the search for the documents using the formula set earlier.-->
<SearchBy Type="Formula">
<Setparam Field="SetFormula" Value="{%vSearchFormula%}"></Setparam>
<Setparam Field="SearchDocuments" Value="true"></Setparam>
<Setparam Field="SearchDesigns" Value="false"></Setparam>
<Setparam Field="PutSearchInSelCreateName" Value="All Enabled Mailrules"></Setparam>
</SearchBy>

<!--The following Focus line will place the focus on the newly created My Selection folder named "All Docs Found".-->
<Focus Target="Tree" Category="All Enabled Mailrules"></Focus>

<!--The following If condition declares that If the My Selection exists (i.e. something has been found), 
the nested child actions will be carried out.-->
<if Target="Tree" Test="FocusRoot" Mode="NotEquals" Value="True">

<!--This will set the displayed document titles to the current database name, for reference in the resulting report.-->
<ChangeDocumentTitle>
<Setparam Field="TitleOptionType" Value="Formula"></Setparam>
<Setparam Field="TitleOptionFormula" Value="@Implode(@DbName;"!!")"></Setparam>
</ChangeDocumentTitle>

<!-- This will enact a Diff operation on the documents within the My Selection folder and select the main "key" 
item by the specified name.-->
<Diff></Diff>
<Select target="DiffGrid" Lines="ByValue">
<SetParam ColumnID="AI2" Value="{%vItemToUseAsKey%}"></SetParam>
</Select>

<!-- This opens the Values grid to display the values for the "key" item defined earlier.-->
<Values>

<!-- This will remove the Type column within the Values grid (for a more concise look).-->
<ShowTypeColumns value="false"></ShowTypeColumns>

<!-- And this adds a custom column where the UNID will be displayed.-->
<AddCustomColumn name="UNID">
<SetParam field="TitleOptionType" Value="System"></SetParam>
<SetParam field="TitleOptionSystem" Value="UNID"></SetParam>
</AddCustomColumn>
<Evaluate></Evaluate>

<!--Finally, the results of the search will be exported into a report titled report_DeleteDoc.xlsx. 
If this script is to be executed as part of a Loop/List, the newly found information will be 
exported and appended to the same file.-->
<Export>
<SetParam field="FilePath" value="report_Mailrules.xlsx"></SetParam>
<SetParam field="SelectedRowsOnly" value="false"></SetParam>
<SetParam field="ExportType" value="Excel"></SetParam>
<SetParam field="Mode" value="AppendRows"></SetParam>
<SetParam field="ExcelSheetName" value="MAILRULES FOUND"></SetParam>
<SetParam field="OpenFileOnceGenerated" value="False"></SetParam>
</Export>
</Values> 
</if>
</ytriaAutomation>

Search databases for archive profiles and report your findings

This script will search for and analyze archive profiles process and then employ formulas to display the values for a custom set of items, obtaining helpful information regarding those profiles. The findings will then be exported to an Excel file. This can be run to process a single database, or multiple databases.

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

<if target="var" test="{%ListSize%}" mode="NotEquals" Value="">
<!--This will allow the script to run if called from databaseEZ by using the option 'Execute Automation File On...'-->
<ExecuteListAction></ExecuteListAction>
</if>
<!--The script uses Loop and List actions. The Loop itself can be modified to fit your needs.-->
<!--TO SET: these variables define the profile you are looking for. 
You may change the values to suit your needs and even add in more lines to the list keeping the format shown.
Note: Personal profile documents are arranged in a level further down in scanEZ's selection tree and must
be selected in a different way.-->
<List name="allProfileName" Action="SetVar" vProfileName="archive profile"></List>
<List name="allProfileName" Action="SetVar" vProfileName="default for expired"></List>
<List name="allProfileName" Action="SetVar" vProfileName="default for last modified"></List>
<!--This line will expand the Profile Documents section of the selection tree.-->
<Expand target="tree" Category="Profile Documents"></Expand>
<!--Beginning here, the rest of the script is the Loop setup. 
All actions within this Loop section will be carried out in turn on all the lines in the List section (above)
that use the specified name. The Loop is set to call on the List name "allProfileName".-->
<Loop list="allProfileName" OnError="Next">

<!--This next action is mandatory in order for the action within the List lines referenced to be carried out.
In the case of the lines in the List "allProfileName", the SetVar action is to be executed.-->
<ExecuteListAction></ExecuteListAction>
<!--Then, everything in the tree will be deselected.-->
<UnSelect Target="tree" name="All"></UnSelect>

<!--This will place the focus on the Profile Documents category so that the SelectByRegex action can be used 
on the first-level entries within.-->
<Focus Target="Tree" Category="Profile Documents"></Focus>

<!--The following line will enact a regex search on the first-level profile documents to find any profile 
documents that contain the name provided.-->
<SelectByRegex Regex="{%vProfileName%}"></SelectByRegex>

<!--As stated early on in this script, Personal Profile documents are arranged at a deeper level in the
selection tree. If you want to be able to search through both of these levels at the same time to find
both the first level profile documents and personal profile documents with this name use this line in place
of the regex search above <Select Target="Tree" Category="Profile Documents" Type="{%vProfileName%}"></Select> -->

<!--This will create a new My Selection folder containing the found documents. 
By doing this the displayed titles can be set to your desired form (titles cannot be set within the
Profile Documents category).-->
<MySelection>
<Setparam Field="MySelectionName" Value="Selection of {%vProfileName%}"></Setparam>
<Setparam Field="TitleOptionType" Value="Formula"></Setparam>
<Setparam Field="TitleOptionFormula" Value="@Implode(@DbName;"!!")"></Setparam> 
</MySelection>
<!--Then the focus is placed on the newly created My Selection folder.-->
<Focus Target="Tree" Category="Selection of {%vProfileName%}"></Focus>

<!--The following If condition declares that if the My Selection does exist,
(meaning that something has been found) the nested child actions will be enacted.-->
<if Target="Tree" Test="FocusRoot" Mode="NotEquals" Value="True">

<!--A Values function is carried out on the focused My Selection folder.-->
<Values>

<!--All items within the Values grid are selected.-->
<SetParam Target="SelectDocumentItems" Field="All" value="true"></SetParam>

<!--And finally all the findings are exported to an Excel file; the results for each profile name 
will be placed on its own sheet within the file. The file will be saved in the same location 
as the this Automation file.-->
<Export>
<SetParam field="FilePath" value="archivereport.xlsx"></SetParam>
<SetParam field="SelectedRowsOnly" value="false"></SetParam>
<SetParam field="ExportType" value="Excel"></SetParam>
<SetParam field="Mode" value="AppendRows"></SetParam>
<SetParam field="ExcelSheetName" value="{%vProfileName%}"></SetParam>
<SetParam field="OpenFileOnceGenerated" value="False"></SetParam>
</Export>
</Values>

</if>

</Loop>
</ytriaAutomation>

Search for ALL mail-related profiles and report your findings

This script will automatically search for all mail-related profiles (such as archive profiles, calendar profile, etc.) and then export all their information to an Excel file. This can be run to process a single database, or multiple databases.

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

<if target="var" test="{%ListSize%}" mode="NotEquals" Value="">
<!--This will allow the script to run if called from databaseEZ by using the option 'Execute Automation File On...'-->
<ExecuteListAction></ExecuteListAction>
</if>
<!--The script uses Loop and List actions. The Loop itself can be modified to fit your needs.-->
<!--TO SET: these variables define the profile you are looking for. 
You may change the values to suit your needs and even add in more lines to the list keeping the format shown.
Note: Personal profile documents are arranged in a level further down in scanEZ's selection tree and must
be selected in a different way.-->
<List name="allProfileName" Action="SetVar" vProfileName="CalendarProfile"></List>
<List name="allProfileName" Action="SetVar" vProfileName="archive profile"></List>
<List name="allProfileName" Action="SetVar" vProfileName="archive database profile"></List>
<List name="allProfileName" Action="SetVar" vProfileName="default for last modified"></List>
<List name="allProfileName" Action="SetVar" vProfileName="default for expired"></List>
<!--This line will expand the Profile Documents section of the selection tree.-->
<Expand target="tree" Category="Profile Documents"></Expand>
<!--Beginning here, the rest of the script is the Loop setup. 
All actions within this Loop section will be carried out in turn on all the lines in the List section (above)
that use the specified name. The Loop is set to call on the List name "allProfileName".-->
<Loop list="allProfileName" OnError="Next">

<!--This next action is mandatory in order for the action within the List lines referenced to be carried out.
In the case of the lines in the List "allProfileName", the SetVar action is to be executed.-->
<ExecuteListAction></ExecuteListAction>
<!--Then, everything in the tree will be deselected.-->
<UnSelect Target="tree" name="All"></UnSelect>

<!--This will place the focus on the Profile Documents category so that the SelectByRegex action can be used 
on the first-level entries within.-->
<Focus Target="Tree" Category="Profile Documents"></Focus>

<!--The following line will enact a regex search on the first-level profile documents to find any profile 
documents that contain the name provided.-->
<SelectByRegex Regex="{%vProfileName%}"></SelectByRegex>

<!--As stated early on in this script, Personal Profile documents are arranged at a deeper level in the
selection tree. If you want to be able to search through both of these levels at the same time to find
both the first level profile documents and personal profile documents with this name use this line in place
of the regex search above <Select Target="Tree" Category="Profile Documents" Type="{%vProfileName%}"></Select> -->

<!--This will create a new My Selection folder containing the found documents. 
By doing this the displayed titles can be set to your desired form (titles cannot be set within the
Profile Documents category).-->
<MySelection>
<Setparam Field="MySelectionName" Value="Selection of {%vProfileName%}"></Setparam>
<Setparam Field="TitleOptionType" Value="Formula"></Setparam>
<Setparam Field="TitleOptionFormula" Value="@Implode(@DbName;"!!")"></Setparam> 
</MySelection>
<!--Then the focus is placed on the newly created My Selection folder.-->
<Focus Target="Tree" Category="Selection of {%vProfileName%}"></Focus>

<!--The following If condition declares that if the My Selection does exist,
(meaning that something has been found) the nested child actions will be enacted.-->
<if Target="Tree" Test="FocusRoot" Mode="NotEquals" Value="True">

<!--A Values function is carried out on the focused My Selection folder.-->
<Values>

<!--All items within the Values grid are selected.-->
<SetParam Target="SelectDocumentItems" Field="All" value="true"></SetParam>

<!--And finally all the findings are exported to an Excel file; the results for each profile name 
will be placed on its own sheet within the file. The file will be saved in the same location 
as the this Automation file.-->
<Export>
<SetParam field="FilePath" value="scanEZ_Profiles_Report.xlsx"></SetParam>
<SetParam field="SelectedRowsOnly" value="false"></SetParam>
<SetParam field="ExportType" value="Excel"></SetParam>
<SetParam field="Mode" value="AppendRows"></SetParam>
<SetParam field="ExcelSheetName" value="{%vProfileName%}"></SetParam>
<SetParam field="OpenFileOnceGenerated" value="False"></SetParam>
</Export>
</Values>

</if>

</Loop>
</ytriaAutomation>

Scan a database for any forms and subforms and report your findings

This script will automatically search for any forms and subforms, display a selection of information related to these designs, and then export all the information into an Excel file. This can be run to process a single database, or multiple databases.

<ytriaAutomation Application="scanEZ" ApplicationVersion="16.5">
<!--This will set the script's behavior when encountering an error. In this case, it will continue.-->
<onerror continue="true" ></onerror>
<!--The following lines define the Action to take, and thus the variables to set. This will happen in two
batches. The first line sets one set of variables, the second sets another. This allows the Loop to concentrate
on one line at a time.-->
<list name="NoteList" Action="setVar" NoteCat="Designs" NoteType="Forms"></list>
<list name="NoteList" Action="setVar" NoteCat="Designs" NoteType="SubForms"></list>
<!--The following Loop, will iterate over the lines of the List set above. As each set of variables is set
the Loop will then select the tree nodes in the design tree that match the conditions.--> 
<loop list="NoteList" OnError="Next">
<ExecuteListAction></ExecuteListAction>
<UnSelect Target="tree" name="All"></UnSelect>
<Select target="tree" category="{%NoteCat%}" type="{%NoteType%}"></Select>

<!--Anything that is selected in the tree will then be placed into virtual My Selection folders for further processing.--> 
<MySelection>
<Setparam Field="MySelectionName" Value="Selection of {%NoteType%}"></Setparam>
</MySelection>
<!--If a My Selection is created, it will be selected.-->
<Focus Target="Tree" Category="Selection of {%NoteType%}"></Focus>
<if Target="Tree" Test="FocusRoot" Mode="NotEquals" Value="True">
<!--The following block will enact a Values operation on contents of the My Selection folder. The item $Title will be added
as will five additional columns that will display database path, the number of fields, a list of fields, and a list of any
subforms.-->
<Values>
<ShowTypeColumns value="false"></ShowTypeColumns>
<SetParam Target="SelectDocumentItems" Field="AddItem" value="$Title"></SetParam>
<AddCustomColumn name="Database Path">
<SetParam field="TitleOptionType" Value="Formula"></SetParam>
<SetParam field="TitleOptionFormula" Value="@Implode(@DbName;"!!")"></SetParam>
</AddCustomColumn>
<AddCustomColumn name="Number of Fields">
<SetParam field="TitleOptionType" Value="Formula"></SetParam>
<SetParam field="TitleOptionFormula" Value="@Elements($Fields)"></SetParam>
</AddCustomColumn>
<AddCustomColumn name="Number of Subforms">
<SetParam field="TitleOptionType" Value="Formula"></SetParam>
<SetParam field="TitleOptionFormula" Value="@Elements($Subforms)"></SetParam>
</AddCustomColumn>
<AddCustomColumn name="List of fields">
<SetParam field="TitleOptionType" Value="Formula"></SetParam>
<SetParam field="TitleOptionFormula" Value="@Implode($Fields;", ")"></SetParam>
</AddCustomColumn>
<AddCustomColumn name="List of subforms if any">
<SetParam field="TitleOptionType" Value="Formula"></SetParam>
<SetParam field="TitleOptionFormula" Value="@Implode($Subforms;", ")"></SetParam>
</AddCustomColumn>
<Evaluate></Evaluate>
<!--Any findings will be exported to an Excel file. The findings for each of the two different note 
types (forms and subforms) will be placed in a separate worksheet within the same file.-->
<Export>
<SetParam field="FilePath" value="formssubforms.xlsx"></SetParam>
<SetParam field="SelectedRowsOnly" value="false"></SetParam>
<SetParam field="ExportType" value="Excel"></SetParam>
<SetParam field="Mode" value="AppendRows"></SetParam>
<SetParam field="ExcelSheetName" value="{%NoteType%}"></SetParam>
<SetParam field="OpenFileOnceGenerated" value="False"></SetParam>
</Export>
</Values> 
</if>
</loop> 
</ytriaAutomation>

Time-Stamped outline

Introduction (1:45)

Assess and clean up your environment (7:00)

  • Get a snapshot of your replication landscape: find the exact number of unique apps, and locate duplicates and orphan mail files | replicationEZ (8:40)
  • Make sure all your apps are present on designated “migration” servers by creating new replicas of missing databases | replicationEZ (12:40)
  • Ensure there are no data discrepancies in your replicas by using note counter reports | replicationEZ, scanEZ (13:45)
  • Get rid of orphan mailboxes by identifying mail owners no longer present in the NAB | databaseEZ (17:35)
  • Record the previous processes to repeat them across other servers | Automation Recorder. (19:30)
  • Perform template inheritance analysis | databaseEZ (21:30)
  • Retrieve the hierarchal layout of your groups and group members | aclEZ (22:30)
  • Clean up your groups by deleting invalid members or users no longer in the NAB | aclEZ (26:20)

Prepare for mail migration. (29:10)

  • Scan and report all mail related profiles | databaseEZ, scanEZ, automation (30:45)
  • Get a clear picture of your out-of-office (OoO) statuses by exporting all their profile settings | databaseEZ, scanEZ, automation (35:30)
  • Take a snapshot of all your active Mail Rules across multiple mail files | databaseEZ, scanEZ, automation (38:00)
  • Get a list of all your encrypted emails and their encryption type across all your mail files by automating the Document Analyzer | databaseEZ, scanEZ, automation (40:50)
  • Scan folders and report their document count | databaseEZ, scanEZ, automation (44:30)
  • Identify documents that belong to more than one folder | databaseEZ, scanEZ, automation (48:00)

Prepare for application migration. (51:40)

  • Identify who has access to what on your server | aclEZ (54:10)
  • Find which applications are used the most and least—by actual users—based on recorded user activity | databaseEZ (58:45)
  • Analyze short-term user activity from the server log file | consoleEZ (1:04:55 )
  • Assess the complexity of your applications by reporting all their forms and subforms | databaseEZ, scanEZ, automation (1:11:25)
  • Identify your largest View and Folder Indexes, or the least used View Indexes | databaseEZ (1:14:50)
  • Find and report documents that contain Reader or Author fields | databaseEZ, scanEZ, automation (1:17:35)

Get your data ready for migration. (1:22:25)

  • Get an overview of the raw data in your application and export it | scanEZ (1:24:20)
  • Example: Migrate application data to SharePoint | scanEZ (1:28:00)

EZ Suite

See just how much faster and more fluid your HCL Notes and Domino administration and development can be.