Portal Changelog Notes:

This update is HUGE. All notes can be found below (most are development notes):


Quick search when adding a field filter

A new theme! You can change this in your preferences if you do not like it.



  • Formula: ext\currency\convert function
    • ext\currency\convert(AMOUNT, FROM_CODE, [TO_CODE])
    • Converts a currency amount from one currency code (FROM_CODE) to another currency code (TO_CODE). If TO_CODE is omitted, then the system default currency is used. Returns an amount represented as string.
  • Formula: record\delete function
    • Removes a record.
  • Formula: string\matchExtract function
    • Returns an array of substrings that match parenthesized sub-patterns. Returns NULL if no matches are found.
    • string\matchExtract(‘values: 1000 2000’, ‘/values\: (.) (.)$/’)
    • Will return [‘1000’, ‘2000’].
  • PostgreSQL experimental support
  • Hard database rebuild
    • CLI command:
    • php command.php rebuild –hard
    • It will drop unused columns, decrease exceeding column lengths, fix index names, fix collations. Recommended to have a database backup before running hard rebuild.
  • Configurable record ID length
  • OIDC: Portal support
    • A separate Authentication Provider entity that can be linked to a Portal entity. Quite a big overhaul. Will be used to create seperate logins for mobile app development.
  • PDF: Dompdf engine
    • Limitations:
      • No mass print into a single PDF. Multiple PDFs are zipped instead.
      • No ability to print a total number of records (in footer & header).
      • Barcode text, padding, bg color do not work. Can be easily achieved by adding needed code in a template.
  • Formula: if-then-else & while statements
  • 2FA support in portals
    • We may end up utilizing this in the future.
  • Formula: record\fetch function
    • Fetches record attributes into an object. Returns NULL if a record does not exists.
  • Formula: userIsBusy function
    • Checks whether a user has calendar activities within a given range.
  • API Before-Save script
    • A formula script executed on create and update API calls. Can be used for duplicate checking and custom validation.
  • Entity Manager custom parameters
    • The ability to define custom parameters for the entity manager. For all and for specific entity types. Primarily for future development additions.
  • URL-Multiple field type
    • A new field type for storing multiple URLs.
  • Text filter: Previous search suggestions
    • Stored in a browser storage. Can be disabled in preferences.
  • Quick search when adding a field filter
  • Memo dashlet
    • To display some text. Can be useful for portals to display some information. Markdown is supported.
  • Copy to clipboard button
  • Enum options re-use


  • Calendar: Showing now-indicator on agenda view
  • Separate parameter to configure number of records initially displayed in Kanban columns
  • Stream: Notes about record unlinking
  • Currency field: Support Decimal DB type
  • Email: View attachments in modal
    • Clicking on the paperclip icon will show attachments in a modal. Useful when an email contents is long and it’s tedious to scroll all the way to the bottom to view or download attachments.
    • Available:
      • in side panel on the detail view;
      • on the list view;
      • in the History panel.
  • Int/Float/Currency fields: Inline calculation
    • With AutoNumeric.js library. After entering the = character, user can enter a simple math expression with +, -, *, /, (, ).
  • Formula: break & continue in while-loops
  • XLSX export: Less memory consuming mode
    • Actual for very large exports. In this mode some formatting features will be disabled, images won’t be included. Before, big numbers of records could not be exported due to the memory limit issue.
  • XLSX export: Parameters enabling printing title & links to records
    • Parameters are shown on the modal when exporting.
  • Customizable Calendar & Activities statuses
    • The ability to specify in Entity Manager how event statues should be treated.
      • Activity, History statuses for Meetings/Calls/Events – determine whether a record is considered actual or history.
      • Completed, Canceled statuses for Meetings/Calls/Events/Tasks – used in the Calendar and the Free/Busy timeline.
  • Locking dashboard layout
    • Regular users are able to lock their dashboard layout. Dragging, resizing and adding will be disabled. Admin can lock the dashboard layout for specific users by editing their preferences. Users will still be able to unlock.
  • Email filters: ‘Body contains all’ filter
    • Matches email that contain all specified phrases.


  • Printing validation error details in log
  • Action interface for API route actions
    • Interface Espo\Core\Api\Action. A route now can call a specific class rather than a named controller.
  • Hook interfaces
    • Some hooks now can optionally implement interfaces. This will make easier for a developer to obtain needed data (passed to the hook) as each interface has a unique method signature. The list of interfaces:
  • API request handling with PSR-15 middlewares
  • Ability to suppress built-in hooks
  • Emails: Print action
    • A dropdown menu action to print email contents.


  • Email account: Can’t save monitored folders other than Inbox
  • Lead capture: Not-working if the teams field is required
  • Lead: Industry options are not available if no access to Account scope
  • Avatar color index out of range
  • Lead Capture: Lead Source options not available
  • Enum field: Empty value is not selected in edit mode if it’s not the first option
  • Some legit characters not allowed in URL field
  • Kanban pagination nor working if record count is disabled
  • Multi-Enum: Filter Is Not Empty throws error
  • Email fetching is hanging on a 500 internal server error if it gets an UTF8 encoded email
  • User name is not used as from name when sending email
  • Event reminders checked only on page load
  • Email address invalid set to null when lead converting
  • Pagination shortcuts not suppressed when focused on form elements
  • Pagination shortcuts not suppressed when focused on form elements
  • Action Set Held Or Set Not Held on a List of Meetings / Calls records produces an error
  • Default team not pre-filled on custom entities
  • Group email account: Auto-reply from-name and from-address are not applied
  • Barcode field doesn’t show when not on first tab
  • Image field: Preview size in list view has no effect
  • List items remain selected after mass update actions
  • Currency field: Issue when decimal places value is empty
  • Issue with int/float/currency fields when thousand separator is .
  • Documents drag-n-drop upload issue
  • PDF: Custom page size not working with Dompdf
  • Can’t upload files with jpeg extension
  • Empty and Not Empty filters producing error for some links
  • Cleanup job error


  • IIS server compatibility
  • Drop MariaDB 10.1 support
  • Drop support of field & relation converters in favor of new framework


  • MariaDB performance improvements
Scroll to Top