php bin/console schedulers:run
Released 17 September 2025
When upgrading or migrating to SuiteCRM 8.9 from a previous version, Email Marketing Records will be updated as follows:
Records with status inactive
will be changed to draft
(the equivalent status in SuiteCRM 8).
A new field type
will be set to Legacy
to distinguish migrated records from those created in SuiteCRM 8.
Two new fields will be added:
Status
— set to Sent
Queueing Status
— set to Finished
A new entrypoint for running schedulers is available as a Symfony command. You can execute it via CLI or set it up as a cron job:
php bin/console schedulers:run
To see more information about Schedulers, and setting up the new configuration see here.
ℹ️ This new entrypoint replaces the legacy cron and needs to be enabled in order to run new symfony side schedulers.
With all the new changes in SuiteCRM 8.9 comes a lot of more documentation!
Documentation has been added for:
Features:
Setup:
File Storage:
Field Options:
Field types:
Extensions:
Campaigns and Email Marketing have been redesigned in SuiteCRM 8!
This release introduces the first phase of the redesign, with more features to come in future releases.
You can see more information about Campaigns here.
The Email Compose modal has been redesigned in SuiteCRM 8!
This release introduces a brand new and redesigned compose modal that aims to provide a better user experience, including:
A configurable compose modal that can be collapsed and can remain open while navigating the app.
To, CC, and BCC fields that support searching and selecting from SuiteCRM Accounts, Contacts, Leads, Users, or individual email addresses using the new Multi-Flex-Relate field.
Attachments implemented using the new storage system.
Ability to insert an Email Template which, when sending, will parse the variables based on the selected Related To record.
The Body field now uses the lightweight Squire editor, offering consistent, rich text editing tailored for emails.
Email address links in Suite 8 views open a new compose modal pre-addressed to that contact.
Even more is planned for the compose modal, the following releases will bring more features such as: saving drafts and attaching existing documents.
SuiteCRM 8.9 introduces two new field types for handling file uploads: file
and attachment
.
File type
Designed for uploading files to a field. This field type is ideal for scenarios where only one file needs to be associated with a record, such as uploading a profile picture, a single contract, or a receipt. The uploaded file is stored using the new media storage system, supporting various backends like local storage, AWS S3, or Azure Blob Storage.
For more information see File Field Type documentation.
Attachment type
Built for attaching multiple items to a record. Unlike the file
field, the attachment
field, by default, always allows users to associate several files at once. Additionally, in future releases we plan to add support not only for file uploads but also linking existing documents from the Documents module, and potentially other types of attachments. This will make it suitable for use cases like attaching supporting documents, reference materials, or related files to a record.
For more information see Attachment Field Type documentation.
ℹ️ Documents and Notes do not yet use the new fields or the new storage system. The migration of these modules to SuiteCRM 8 version will be provided in a future release.
This release does not yet include a migration path for old files stored in the legacy upload
directory. A migration path will be provided in a future release.
These field types leverage the media uploader system, which allows files to be stored in various backends: local storage, AWS S3 or Azure Blob Storage.
A new concept of "storage types" has been introduced to define different storage backends and locations for different use cases. Each storage type can be linked to a different storage system, e.g. it is possible to have private_documents
pointing to Azure blobs while private_images
points to AWS S3. This should give system admins flexibility in how and where files are stored.
Currently, there are 5 storage types:
private_documents
— stored in uploads/documents
public_documents
— stored in public/media-upload/documents
private_images
— stored in uploads/images
public_images
— stored in public/media-upload/images
archived_documents
— stored in uploads/archived
To see more information about configuring external storage services, see File Storage Configuration documentation.
Multi-Relate fields have been added to SuiteCRM 8.
You can now relate multiple associated records at once (see below). For more information see Multi Relate documentation.
ℹ️ For the moment this field is not available in the Studio. A future release will include Studio support.
SuiteCRM 8.9 introduces 3 new schedulers:
Queue Email Marketing — Queues Email Marketing Records that are scheduled to be sent.
Send Campaign Emails — Sends the queued emails for Email Marketing Records.
Clean Up Temporary Files — Cleans up temporary files.
Prune Database scheduler — Prune Database scheduler has been moved to symfony side and now also removes media objects from the new storage system.
You can now select a Default Outbound Email Account. This will be used as the pre-selected Outbound Account when composing a Campaign or Email.
For newly created users, the first personal outbound created will automatically be set as their default. This can be updated via the "Actions" dropdown on the record.
PR: 662 - Fix #540 - Two tooltips are displayed for listview icons to log call, schedule meeting, create task, compose email
PR: 634 - Fix #625 - Opportunities list freeze when change Decimal Symbol and 1000s separator
PR: 635 - Fix #584 - Difficult to assign user to role when pagination is over top of buttons
PR: 636 - Fix #575 - Proceed button on installation page only submits user action when clicked outside of text
PR: 417 - Fix #274, #503 - Call list shows Related to field incorrectly if containing letters with accents
PR: 698 - Fix #678 - Enable checkbox filter retrieval in quick filters
Fields:
Four new field types have been introduced:
File
Attachment
Multi-Relate
Multi-Flex-Relate
Only available on edit mode
The new HTML editor is now based on the Squire Editor.
Backend driven default value initialization - You can use initDefaultProcess
to initialize field default values by calling the backend.
Backend driven Save Validators - Use asyncValidators
in field definitions for custom asynchronous validation.
Relate and Multi-Relate fields:
Relate fields now support confirmation modals.
Relate fields can now search on empty with the flag filterOnEmpty
on the vardef. This will search for results without inputting any values.
Header and subheader fields can be added to relate fields.
Preset criteria can be added to relate fields for searching.
Criteria for relate fields can be added via the vardefs.
Field labels can now be hidden on record view by adding 'labelDisplay' ⇒ none
via the vardefs.
Toggle fields visibility via field actions using 'toggle-fields-visibility'.
Dynamic labels can be added to field labels.
Fields now support "footnotes" this can be added to the field via the definition. This supports "activeOn" Fields to hide/show conditionally.
You can now add a default mapper for fields using the VardefConfigMapperInterface
.
Record:
You can now redirect to another module after deletion by adding the redirectModule
inside the action params
.
After creating a record from a parent record you can add the option to not redirect back to the parent record after creation with the redirect ⇒ false
flag.
The back button on record view can now be hidden.
Navigation options can be configured for the back button.
Grids and Widgets:
Widgets can be filtered by mode or using the activeOnFields
setting.
Added a new banner grid sidebar widget.
Added a new grid top widget.
Statistic Sidebar widgets can now be collapsible with the allowCollapse
key.
Statistic Sidebar widgets can now be hidden with 'display' ⇒ true
on the row configuration.
Modals:
Added a new Record Modal.
Added a new field grid modal.
You can now add descriptions on modals.
Modals can now be minimizable using the 'minimizable' ⇒ true
via the definition.
Dynamic labels can also be used on modals.
Modals can have multiple confirmation messages using confirmationMessages
.
Subpanels:
Unwanted subpanels can now be hidden by adding 'hidden' ⇒ true
to the definition of the subpanel.
Buttons:
Dynamic classes, icons and labels can be used on buttons.
Icons:
Icons can now be added on frontend validation by adding the icon
flag to the returning label
configuration.
We would love to have your feedback and input to help make SuiteCRM 8 great for everyone.
Special thanks to the following members for their contributions and participation in this release!
If you have found an issue you think we should know about, or have suggestion/feedback, please Submit An Issue.
If you want to get involved and submit a fix, fork the repo and when ready please Submit A PR - More detail for developers can be found here.
Please visit the official website to find the appropriate upgrade package.
To report any security issues please follow our Security Policy
Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.