This section lists the changes between different Maconomy versions, and the steps required to migrate from one version to another. These steps should be performed manually by an extension consultant with access to the Maconomy Extender tool.

Note: To download release notes, you must have access to Deltek Software Manager.

Maconomy 2.6.1 to 2.6.2

File: Download release notes open in new window

This section details the changes (breaking and otherwise) that you will encounter when upgrading to Maconomy 2.6.2.

DocumentationUrl is now deprecated

The documentationUrl property (previously used for hosted help) is now deprecated. It is replaced by a new documentation component, which can include multiple help items. Each item consists of a title, a URL link, and an optional icon.

You can display items as a simple list or group them into sections. You can also apply a visible property to individual items or to sections.

Shell.json

{
  "menu": {
    ...
  },
  "documentationUrl": "https://help.deltek.com/product/...",
  "settings": {
    ...
  },
  ...


















{
  "menu": {
    ...
  },
  "documentation": {
    "T$title": "Help",
    "items": [
       {
        "visible": "true",
        "items": [
          {
            "T$title": "User Guide",
            "icon": "fa-solid fa-bookmark",
            "url": "https://help.deltek.com/product/..."
          }
        ]
      },
      {
        "T$title": "Example email address",
        "url": "mailto:janicedoe@fakeemail.com"
      }
    ]
  },
  "settings": {
    ...
  },
  ...

BeforeAfter

Analyzer configuration properties are reorganized

A new analyzer property is added to the Shell.json configuration file.

This property contains the following existing configuration properties:

  • reportRunsDropDown
  • reportsMenu

It also contains two new mandatory properties:

  • finishedReportsFooter
  • inlineInfoDialog

For more information, see Shell.

Changes to Shell.json
{
  ...
  "reportrunsdropdown": {
    ...
  },
  "reportsmenu": {
    ...
  },
  ...









}



 


 














{
  ...
  "analyzer": {
    "reportRunsDropDown": {
      ...
    },
    "reportsMenu": {
      ...
    },
    "finishedReportsFooter": {
      "noOfRowsPrPages": [10, 25, 50, 100],
      "defaultNoOfRowsPrPages": 25,
      "noOfPagesPrPageGroup": 5
    },
    "inlineInfoDialog": {
      "autocloseMillis": 10000
    }
  },
  ...
}
BeforeAfter

Maconomy 2.6 to 2.6.1

File: Download release notes open in new window

This section details the changes (breaking and otherwise) that you will encounter when upgrading to Maconomy 2.6.1.

Side panels deprecated

The sidePanel configuration object, usually used to specify the UI for selection criteria in workspaces with tabs, is now deprecated. It is replaced by a new `selectionCriteria' property which you can use in workspaces with or without tabs.

Example in JobEstimating_Budget_Tab.json
{
  "T$Title": "Budget",
  "pane": "JobBudgetsCard",
  "badge": {...},
  "actions: {...},
  "sidePanel": {
    "T$title": "Selection Criteria",
    "pane": "JobBudgetsCard",
    "showChips": true,
    "collapsible": {
      "expanded": false
    },
    "elements": [
      "ShowBudgetTypeVar"
    ]
  },
  "rows": [
    ...
  ]
  ...
}


{
  "T$Title": "Budget",
  "pane": "JobBudgetsCard",
  "badge": {...},
  "actions: {...},
  "rows": [
    {
      "selectionCriteria": {
        "T$title": "Selection Criteria",
        "pane": "JobBudgetsCard",
        "showChips": true,
        "collapsible": {
          "expanded": false
        },
        "elements": [
          "ShowBudgetTypeVar"
        ]
      }
    }
    ...
  ]
  ...
}
BeforeAfter

Maconomy 2.5.5 to 2.6

File: Download release notes open in new window

This section details the changes (breaking and otherwise) that you will encounter when upgrading to Maconomy 2.6.

The optional class property is removed from form elements

The class configuration property is now removed from all form elements used within configuration files.

Example form elements with class property
"elements": [
  {
    "text": {
      "T$template": "Invoice #",
      "class": "heading"
    }
  },
  {
    "field": {
      "source": "PayerName1",
      "appearance": "maximized",
      "class": "subheading"
    }
  }
]
"elements": [
  {
    "text": {
      "T$template": "Invoice #"
    }
  },
  {
    "field": {
      "source": "PayerName1",
      "appearance": "maximized"
    }
  }
]


BeforeAfter

Wizard PageLayout property changes

The rendering configuration property is now removed from wizard configuration files. In addition, the open predicate is now added to wizards; this determines whether fields in this part of the layout part are shown as open for editing.

Example wizard workspace configuration
"wizardWorkspace": {
  "name": "TimeSheetsWizard",
  "T$title": "Time Sheet",
  "size": "lg",
  ...
  "pageLayouts": {
    "main": {
      "rendering": "presentation",
      "rows": [
"wizardWorkspace": {
  "name": "TimeSheetsWizard",
  "T$title": "Time Sheet",
  "size": "lg",
  ...
  "pageLayouts": {
    "main": {
      "open": "false",
      "rows": [
BeforeAfter

Authentication removed from application file

The authentication configuration object is now removed from the application.json configuration file.

For more information, see Configuration API.

application.json
{
  "api": "23.0.0",
  "application": {
    "version": "2.5.0"
  },
  "authentication": {...},
  "shell": {
  ...

{
  "api": "23.0.0",
  "application": {
    "version": "2.5.0"
  },
  "shell": {
    "$ref": "Shell:Shell"
  },
  ...
BeforeAfter

Layout added to settings

The layout configuration object is now added to the Settings.json configuration file. This determines the margin of the workspace, and includes the grabHorizontalSpace layout property. When you set grabHorizontalSpace to true, the workspace will have narrow margins and grab the available horizontal space.

For more information, see Settings.

Settings.json
{
  "formatting": {...},
  "formats": {
    "$ref": "Formats"
  },
  "menuSearch": false,
  "images": true
}



{
  "formatting": {...},
  "formats": {
    "$ref": "Formats"
  },
  "menuSearch": false,
  "images": true,
  "layout": {
    "grabHorizontalSpace": false
  }
}
BeforeAfter

Settings for Analyzer reports added to the shell configuration file

This release introduces the Analyzer report functionality to the Maconomy web client. You can find settings for the Analyzer reports in the reportrunsdropdown and reportsmenu configuration properties, which are added to the Shell.json configuration file.

For more information, see Shell.

Shell.json
{
  "menu": {
    ...
  },
  "reportrunsdropdown": {
    "initialRefreshReportRunsSeconds": 5,
    "refreshReportRunsSeconds": 5,
    "firstUpdateReportRunsSeconds": 1,
    "secondUpdateReportRunsSeconds": 1
  },
  "reportsmenu": {
    "refreshReportsMenuSeconds": 5
  },
  ...`

CSS, color, and palette changes

The web client has undergone some UI enhancements to give the interface a more modern feel. This resulted in the following changes to the configuration files:

  • The css configuration property is removed from the GlobalDefinitions.json configuration file.
  • The global palettes in Palettes.json are restructured for clarity.
  • The default palette property is removed and no longer available as an option. You should now use full references to a palette item at all times. For more information, see Palettes.
Palettes.json
{
  "default": "WorkflowStatus",
  "palettes": {
    "WorkflowStatus": {
      "WorkflowStatusOpen": {
        "backgroundColor": "#cff4fc",
        "foregroundColor": "#0aa2c0",
        "badgeColor": "#9eeaf9"
      },
      "WorkflowStatusClosed": {
        "backgroundColor": "#6c757d",
        "foregroundColor": "#f8f9fa",
        "badgeColor": "#6c757d"
      },
      ...
{
  "WorkflowStatus": {
    "Open": {
      "background": "#0AA2C0",
      "foreground": "#FFFFFF",
      "badge": "#0AA2C0"
    },
    "Closed": {
      "background": "#6C757D",
      "foreground": "#FFFFFF",
      "badge": "#6C757D"
    },
    ...


BeforeAfter
  • The css configuration property is removed from this version, along with any references to css propery keys or css styles. In its place, you can use the optional color configuration property, which contains either a palette item name or palette item reference.
Mask mappings example
"status": {
  "source": "TimeSheetStatusVar",
  "mask": {
    "1": {
      "css": "calendarTimeDue",
      "T$title": "Due"
    },
    "2": {
      "css": "calendarTimeSubmitted",
      "T$title": "Submitted"
    },
    ...
  }
}
"status": {
  "source": "TimeSheetStatusVar",
  "mask": {
    "1": {
      "color": "CalenderTime.Due",
      "T$title": "Due"
    },
    "2": {
      "color": "CalenderTime.Submitted",
      "T$title": "Submitted"
    },
    ...
  }
}
BeforeAfter
  • To take account of the palette changes, the color configuration property (used within such elements as alert, activity, events, and so on) is updated. Previously, you could use this property to specify palette item name and palette item reference (that is, as an object containing the name of the palette and the item in the palette). Now, you can use this property to specify a string (a standard web color such as a hex triplet, an RGB value, or a named HTML color), or a qualified reference to a palette item (for example, palette1.item2).
Example within alert element
"alert":
  {
    "T$template": "Please note, ...",
    "icon": "fas fa-exclamation-triangle",
    "color": {
      "palette": "Alert",
      "item": "Warning"
    }
  }
"alert":
  {
    "T$template": "Please note, ...",
    "icon": "fas fa-exclamation-triangle",
    "color": "Alert.Warning"
  }



BeforeAfter

Enhancements to the grid element

The grid has undergone some enhancements. Most of these are optional, and therefore do not cause validation issues. Nevertheless, this section explains all the changes.

For more information, see Grid.

A simple grid
"grid": [
  {
    "lineType": "header",
    "cells": [
      "HeaderField1",
      "HeaderField2",
      "HeaderField3",
    ]
  },
  {
    "cells": [
      "StringField1",
      "StringField2",
      "StringField3",
    ]
  },
  {
    "lineType": "total",
    "cells": [
      "TotalField1",
      "TotalField2",
      "TotalField3",
    ]
  }
]

As the previous example shows, a grid still contains a simple series of lines, each with a normal, total or header linetype. Note that subtotal is now deprecated; you will need to edit lines that use this linetype before the grid undergoes validation.

Subtotals are now part of an enhanced grid which is introduced with this version.

This enhanced grid consists of three configuration properties:

  • Lines array - This represents the grid's rows, including headers, normal lines, and sections.
  • Columns array - This allows logical grouping and assignment of shared properties across columns. This property is optional.
  • maxWidth - This allows the grid to grab all available horizontal space. This property is optional.
Lines

The lines array consists of any number of lines (each with a normal, total or header linetype), as well as one or more sections (with each section containing its own normal, total or header lines). Section totals replace the deprecated subtotal linetype.

The contents of the lines array in each of the following examples can be merged together to create a grid with a section, a simple line, and a grand total (or any combination of these).

The lines array
"grid": {
  "lines": [
  {
    "title": "A Section Title",
    "visible": "not BooleanField1",
    "lines": [
      {
        "title": "1st row in section A",
        "cells": [
          "StringField1",
          "StringField2",
        ]
      },
      {
        "title": "2nd row in section A",
        ...
      },
      {
        "title": "Total row in section A",
        "lineType": "total",
        "cells": [
          "StringField1",
          "StringField2",
        ]
      }
    ]
  },
  ...
"grid": {
  "lines": [
  {
    "title": "Simple line with title",
    "cells": [
      "StringField1",
      "StringField2",
    ]
  },
  {
    "title": "Grand Total",
    "lineType": "total",
    "cells": [
      "StringField1",
      "StringField2",
    ]
  }
  ...










Section exampleSimple line examples
Columns

The optional columns array consists of objects that contain the following information:

  • colspan - The number of visual columns a given scope covers
  • visible - A visibility predicate that determines whether this part of the layout is shown

Both of these properties are optional. The following example shows the configuration for a grid containing four columns. The first column uses default property values (is visible and spans one column) and is thus empty. The second and third columns are combined using the colspan property. The fourth column is not defined at all, so it also uses default property values.

Columns example
"grid": {
  "maxWidth": false,
  "columns": [
    {},
    {
      "visible": "not BooleanField3",
      "colspan": 2
    }
  ],
A header in shorthand

You can code a header line in shorthand. The columnTitles configuration property consists of an array of text cells only.

Column titles example
"lines": [
  {
    "lineType": "header",
    "cells": [
      {
        "text": {
          "title": "1st Column Title"
        }
      },
      ...
    ]
  },
  ...
"lines": [
  {
    "columnTitles": [
      "1st Column Title",
      "2nd Column Title",
      "3rd Column Title",
      "4th Column Title"
    ]
  },
  ...



BeforeAfter

For complex grid examples, go to the web client >> Tests menu section >> Grid: Advanced and Dynamic_**.

Enhancements to charts

The chart has also undergone some major enhancements. As a result of this, the dashboard and height properties are now removed.

Example within JobDashboard_FixedPrice.json
"chart": {
  "type": "line",
  "dashboard": true,
  "series": [
    {
      "T$title": "Actual",
      ...
  "chart": {
    "type": "line",
    "series": [
      {
        "T$title": "Actual",
        ...

BeforeAfter

Heading Calendars

The calendar in the header area of a workspace no longer uses the optional selectionBackgroundColor property.

Maconomy 2.5.4 to 2.5.5

File: Download release notes open in new window

This section details the changes (breaking and otherwise) that you will encounter when upgrading to Maconomy 2.5.5.

Enums added to global definitions

The enums configuration property is added to the GlobalDefinitions.json configuration file.

For more information, see Global Definitions.

GlobalDefinitions.json
{
  "colors": {
    "$ref": "Colors"
  },
  ...


{
  "colors": {
    "$ref": "Colors"
  },
  ...
  "enums": {}
}
BeforeAfter

Changes to input blocks

You can no longer use the check-dropdown type for overriding an input block. Use the optional widget property to set the default widget for this purpose.

Widget example
"rows": [
  {
    "elements": [
      {
        "field": {
          "source": "EmployeeNumber",
          "shadowTitle": "Blank for default employee no.",
          "appearance": "maximized",
          "widget": "check-dropdown"
        }
      }

Wizards

The configuration of a workspace wizard no longer has the optional variables property.

Maconomy 2.5.3 to 2.5.4

File: Download release notes open in new window

This section details the changes (breaking and otherwise) that you will encounter when upgrading to Maconomy 2.5.4.

BO report date parameters changed

Links to BO reports often send date parameters. Due to changes in third-party libraries, date formatting is updated. In most situations, you must replace the specifiers for YYYY, MM, and DD with yyyy, M, and d, respectively. (However, you might have to keep the MM in some reports. That is: YYYY,MM becomes yyyy,MM.) Failure to make these changes will result in the links failing, and the request returning the following error message: "For input string 'YYYY' error (INF)".

For more information on the library used, see kendo-intl open in new window.

Example A
"lsSFrom Date:": "Date(^{format(addMonths(currentDate(), 0), 'YYYY,MM,1')})"
"lsSFrom Date:": "Date(^{format(addMonths(currentDate(), 0), 'yyyy,M,1')})"
BeforeAfter
Example B
"lsSCompare To Date:": "Date(^{format(addMonths(currentDate(), -12), 'YYYY,MM,DD')})"
"lsSCompare To Date:": "Date(^{format(addMonths(currentDate(), -12), 'yyyy,M,d')})"
BeforeAfter

Images introduced to the menu

The boolean images configuration property is added to the Settings.json configuration file. Use this property to enable/disable image displays.

For more information, see Settings.

Settings.json
{
  "formatting": { ... },
  "formats": {
    "$ref": "Formats"
  },
  "menuSearch": false,
}

{
  "formatting": { ... },
  "formats": {
    "$ref": "Formats"
  },
  "menuSearch": false,
  "images": false
}
BeforeAfter

Palettes added to global definitions

The palettes configuration property is added to the GlobalDefinitions.json configuration file. In addition, some definitions have been moved from the css configuration file to the Palettes.json configuration file.

For more information, see Global Definitions, Palettes.

GlobalDefinitions.json
{
  "colors": {...},
  "css": {"$ref": "Css"},
  "infoBubbles": {...},
  "sizes": {...},
  "styles": {...},
  "tables": {...},
  "searchLayouts": {
   ...

{
  "colors": {...},
  "palettes": {"$ref": "Palettes"},
  "css": {"$ref": "Css"},
  "infoBubbles": {...},
  "sizes": {...},
  "styles": {...},
  "tables": {...},
  "searchLayouts": {
  ...
BeforeAfter

Definitions moved from the Css.json configuration file to the Palettes.json configuration file are also redefined (as seen in the following example).

For more information, see Palettes.

WorkflowStatus palette definitions
{
  "workflowStatusOpen": {
    "background-image":
      "linear-gradient(...)"
  },
  "workflowStatusClosed": {...},
  "workflowStatusDue": {...},
  "workflowStatusSubmitted": {...},
  "workflowStatusApproved": {...},
  "workflowStatusRejected": {...},
  ...


{
  "default": "WorkflowStatus",
  "palettes": {
    "WorkflowStatus": {
      "WorkflowStatusOpen": {
        "backgroundColor": "#cff4fc",
        "foregroundColor": "#0aa2c0",
        "badgeColor": "#9eeaf9"
      },
      "WorkflowStatusClosed": {...},
      ...
    },
    ...
Previously in Css.jsonWithin Palettes.json

Preferred authentication type setting is deprecated

The preferred setting is deprecated, and is now an an optional setting. This setting is related to the preferred login method, and determines the entry route when arriving from the bare and default '/' URL.

Authentication.json
{
  "preferred": "maconomy",
  "methods": {
    "maconomy": {
      "enabled": true
    },
    ...

Status indicator settings changed within elements

The css property is deprecated, and will be removed in Maconomy version 2.6. An optional color property, which contains either a palette item name or palette item reference is introduced.

The following example shows these changes utilized for a mask map specification:

JobEForms_Record.json
"status": {
  "source": "WorkflowStatusVar",
  "mask": {
    "closed": {
      "T$title": "Job Closed",
      "css": "workflowStatusClosed",
      "info": {
        "position": "left",
"status": {
  "source": "WorkflowStatusVar",
  "mask": {
    "closed": {
      "T$title": "Job Closed",
      "color": "WorkflowStatusClosed",
      "info": {
        "position": "left",
BeforeAfter

A similar change is applied to form elements. The css property is deprecated, and the optional color property is introduced.

The following example uses a palette item reference, with 'Alert' as the specified palette, and 'Danger' as the exact palette item.

Color example
"color": {
  "palette": "Alert",
  "item": "Danger"
}

Maconomy 2.5.2 to 2.5.3

File: Download release notes open in new window

This section details the changes (breaking and otherwise) that you will encounter when upgrading to Maconomy 2.5.3.

No breaking changes

There are no breaking changes between these two versions.

CSS Class option removed from layout columns options

CSS classes are no longer applied directly to column components. You should remove the class property from element, conversation and layout columns.

Class example
"columns": [
    {
      "span": 2,
      "class": "heading",
      "elements": [
        {
          "text": {
            "T$template": "Credit Memo ^{InvoiceNumber}",
            "class": "heading"
          }
        },