Skip to main content

Creating Custom Reports

Last updated: Tue, 04 Dec 2018 22:15:22 GMT
iOFFICE Knowledge Center

Creating Custom Reports

The Insights module can be used to create custom reports, providing you with a powerful tool for visualizing your data in real time. To help you get started with ad hoc reporting, refer to the following guidelines. You can also refer to our formula cheat sheet, which is designed to help you create custom columns for your report.


  1. Getting Started. Creating a new report is easier than you think. Simply click the Reports module icon (1) and select the Create Reports option (2). The Choose Your Data screen displays.

    Create a new report

    On this screen, select the module from which you are pulling data (3) and the report domain (4). All the fields associated with the domain are selected automatically, and the Report Editor screen displays.

  2. Adding Columns or Groups. Fields can be added to the report using a variety of methods. You can double-click the field name in the Fields section, drag and drop the field directly to the report preview, or to the Columns or Groups field, or you can right-click on a field and select an option from the right-click menu.

    Report Editor screen 

  3. Using Right-click menus. Right-Click menus are available in all sections of the screen to provide you with additional functions, including editing field or measure labels, sorting by a field, creating filters, and so on. For example, suppose you want to only display interoffice mail items on the report. Simply right-click the Courier field in the Report Preview section and select the Create Filter option. The filter displays on the right-hand side of the screen.

    Use the Down Arrows and available fields to define options for the filter. To display only interoffice mail items, select is one of using the Down Arrow in the filter header, deselect all courier types, and then highlight Interoffice in the courier list. When you click apply, the filter is applied and the report will only generate data for interoffice mail items.

  4. Calculating Measures. To take it further, iOffice reports also allow you to define calculated measures for your report. This feature allows you to create custom fields with your data. To create a calculated measure, hover over the Option icon in the Measures section and select the Create Calculated Measure option.

    The New Calculated Measure window displays, where you can define your measure criteria. For example, suppose you don't want to display notes on the report, but you want to know whether notes have been entered for mail items on the report. On the New Calculated Measure window, enter a name for your measure, and use the Fields and Measures section and the Functions section to build a formula.

    For this particular measure, use the following formula: IF(Contains("Notes", ' '), 'Notes Added', 'No Notes'). To break this down into parts, you are telling the report that IF the "Notes" field Contains '(a space)', read this field value as true and display 'Notes Added' in this column; otherwise, read the field value as false and display 'No Notes' in this column. When you are finished entering your formula, click the Validate button to determine whether your formula is valid. Once the formula is correct, click the Create Measure button. The new measure is available in the Measures section, and you can add it to the report.

    While this is just one example of many, hopefully the example provides you with a good starting point for building your own reports.

Remember that each function has different criteria for what is considered valid, so complex functions can require both trial and error as well as additional research. Feel free to dive in and experiment -- that is the best way to learn!



Formula Cheat Sheet

Use the following formulas to help you create the corresponding report type. This list will be updated periodically to help you maximize this powerful feature.


Space Domains

Measure Name



Area per Occupant

Square footage per user

("Area" / "Occupant Count")

Number of Rooms

Number of rooms

CountDistinct("Room Name", 'Current')


Percentage of rooms

PercentOf("Number of Rooms", 'Current')

Area per Room

Square footage per room

("Area" / "Number of Rooms")

Summary by Classification

Building summary by Space Classification

IF(StartsWith("Type", '13'), 'Interior Parking', IF(StartsWith("Type", '14'), 'Vertical Penetration', IF(StartsWith("Type", '15'), 'Void', IF(StartsWith("Type", '21'), 'Core Building Service', IF(StartsWith("Type", '22'), 'Primary Circulation', IF(StartsWith("Type", '32'), 'Expansion',  IF(StartsWith("Type", '33'), 'Secondary Circulation', IF(StartsWith("Type", '41'), 'Business Support', IF(StartsWith("Type", '42'), 'Personnel Service', IF(StartsWith("Type", '43'), 'Training & Collaboration', IF(StartsWith("Type", '44'), 'Public Space', IF(StartsWith("Type", '51'), 'Office', IF(StartsWith("Type", '52'), 'Environmentally Controlled', IF(StartsWith("Type", '53'), 'Medical Practice', IF(StartsWith("Type", '55'), 'Laboratory', IF(StartsWith("Type", '61'), 'Commercial Space', IF(StartsWith("Type", '71'), 'Production', IF(StartsWith("Type", '72'), 'Warehouse',  IF(StartsWith("Type", '81'), 'Residential', IF(StartsWith("Type", '91'), 'Alternative Workplace', IF(StartsWith("Type", '92'), 'Non-enclosed Roof', 'False')))))))))))))))))))))


Move Domains 

Measure Name



New Hires

Display a count of new hire transactions. If necessary, replace the word 'New' with the applicable term.

IF(Contains("Request Type", 'New'), 1, 0)


Display a count of terminate transactions. If necessary, replace the word 'Exiting' with the applicable term.

IF(Contains("Request Type", 'Exiting'), -1, 0)


Displays a count of move transactions. If necessary, replace the word 'Employee' with the applicable term.

IF(Contains("Request Type", 'Employee'), 1, 0)


Service Request Domains 

Measure Name



Work Started

Use to determine whether an open request as been started.

IF(IsNull("Date Time Started"), 'Overdue - Not Started', 'Overdue - Started')


Use to determine if open request is overdue.

IF(ElapsedMinutes("Date Required", Today(0)) >= 0, 'On Time', 'Overdue')

OnTime vs. Late

Use to determine whether a request is on time or late.

IF("Date Completed" < "Date Required", 'On Time', 'Late')


Use to determine whether an archived request is overdue.

IF("Date Completed" > "Date Required", 'Overdue', 'On-time')

Required by Time (hrs)

Use to determine whether the duration of the request is required.

ElapsedHours("Date Required", "Date Created")

Time to Complete (hrs)

Use to determine the time required to complete the request.

ElapsedHours("Date Completed", "Date Created")


Use to determine the percentage of flagged requests to supplement the counts for Request Number.

PercentOf("Request Number", 'ColumnGroup')

Scheduled Task

Determine whether there is a scheduled task flag to help you differentiate between scheduled tasks and on-demand requests.

IF("Scheduled Task Flag" == 'Yes', 'Scheduled Tasks', 'On-Demand Requests')


Related Topics



  • Was this article helpful?