Custom Reports enable you to create and re-use reports using a stack of SQL-like input arguments. You can use these to fetch, sort, and combine database object and attribute values. For example, you can use use the Custom Reporting query parts to generate MOVEit Transfer performance and status data.

Figure 1. Select a Custom Report Category

When Creating a Custom Report from Scratch

To define a custom report, you define a custom SQL-like query. You should be familiar with the database structure and values available to be queried and have a feel for how SQL (Structured Query Language) works for getting these values. For information about the database schema available to MOVEit Transfer, see the topic titled Partial Database Schema.

When Creating a Custom Report from an Existing Report

Custom reports can be exported and imported, so you can share them between compatible MOVEit Transfer systems, administrators, and MOVEit support personnel.

To create a custom report from an existing report, you can use the Choose File option.

Note: Both basic and custom reports can be added, edited, executed, and deleted. For more information about basic report management, see the topic titled Reports.

Adding a Custom Report

  1. In the navigation pane, click REPORTS. The Reports page opens.
  2. In the Add Report... section, in the Report Category dropdown, select Custom.
  3. Make a selection:
    • Create from scratch. See the syntax and examples in the section titled Custom Report Configuration Options.
    • Create from existing. Click Choose File and select the existing report on which to base the new report. The Edit Report page opens.

If you choose Create a from Scratch the Add Report page displays.

If you choose Create from existing, you will be prompted to import a previously exported report file. (A successful import will lead to the Edit Report page, where additional options may be configured.)

Editing a Custom Report

After you create a custom report, you can edit it. Just click the pencil icon in Reports view.
Figure 2. Edit a Custom Report (edit button highlighted)

Custom Report Configuration Options

Custom Report configuration option map to SQL queries and expect use of proper MOVEit Transfer database data object and attribute names.
Figure 3. Custom Report Query Input Stack

For example, for a custom Storage Report, you can retrieve the value for a file's time stamp (contained in the UploadStamp attribute) by using the following syntax applied to the Fields text box:

Files.UploadStamp —Where UploadStamp is an attribute name (literal) of the Files data object.
Note: For more information on data objects (Users, Files, Folders, and so on), you can see the topic in this guide titled Database - Partial Schema.

Other report configuration and output options similar to built-in reports.

  • Name. Report name.
  • Report Category. Custom (static or non-editable field).
  • Report Type. Custom.
  • Format. Output format.
  • Run On Days. Days to run scheduled report.
  • Save In Folder and Save As File.
  • Fields. Determines which fields will be requested during the query. If a report will be querying data from more than one database table, prefix each field by its table name.

    Fields Example 1:

    Users.Username (You must provide at least one field.)

    Fields Example 2:

    Users.Username,Files.FolderID,Files.UploadStamp (Where you separate multiple fields using a comma, as shown.)
  • Tables. Specifies the database tables to be queried, and how to join those tables to each other for the proper results.

    Example:

    Get the RealName field for a user account that uploaded a file, use the following:

    "Files LEFT JOIN Users ON Files.UploadUsername=Users.Username"(This parameter is required.)

  • Criteria. Determines which data rows will be returned by the query. This is analogous to the "WHERE" clause in an SQL query.

    Example:

    Return users who are not marked as deleted:

    "Users.Deleted='0'"

    (Multiple criteria statements can applied using the "AND" keyword.)
  • Grouping. Determines how results should be grouped, if desired. This is analogous to the "GROUP BY" clause in an SQL query.

    Example:

    To group by account usernames, use the following:

    "Users.Username"

  • Order. Determines the order in which the results will be returned. This is analogous to the "ORDER BY" clause in an SQL query. Use the "ASC" keyword to order in an ascending fashion, and the "DESC" keyword to order in a descending fashion.

    Example:

    For example, to order by account usernames alphabetically in an ascending fashion, use "Users.Username ASC"
  • Limit. Limits the number of results to the specified number. If blank, all results will be returned.

Operators such as the minus sign normally apply to all times and dates in a macro phrase. To apply operators to only part of a macro phrase, use single-quotes or double-quotes to delimit phrases. For example, if today is currently July 5, 2007, a macro of:

  • [dd][mm-][yyyy] TO [dd][mm][yyyy] yields 05062007 TO 05062007
  • "[dd][mm-][yyyy]" TO "[dd][mm][yyyy]" yields "05062007" TO "05072007"

Exporting a Custom Report

In addition to the Run Report section, the Export Report section appears on the Edit Report page for custom reports. This allows the current report definition to be exported to a file, which can then be imported using the process above. Click Export Report to generate an export file and send it to a browser, where it can be downloaded.

Note: Only the name and custom query definition fields are exported. Information such as format, run times, and destination folder are not included in export files, as they are generally unique to the system.

Custom Report Example

The following code snippet is an example of a custom report. You can save this code to an XML file and import into MOVEit Transfer using the Choose File option that displays when you select the Create from Existing radio button.
<reportexport>
    <name>Upload Restrictions Report</name>
    <fields>folders.instid AS Org_ID, institutions.name AS Org_Name, folders.name AS Folder_Name, folders.folderpath AS Folder_File_Path, folders.foldertype AS Folder_Type, folders.owner, folders.filemasks AS File_Mask, Folders.filefoldernamecustomcharset AS Characters_Mask</fields>
    <tables>folders left join institutions ON folders.instid=institutions .id</tables>
    <criteria>folders.name != &#039;Drafts&#039; and folders.filemasks !=&#039;&#039;</criteria>
    <grouping />
    <order>folders.name desc</order>
    <limit />
</reportexport>