SpiceCRM release 2023.01.001

2023 started with a Bang!!!

Check the usability enhancements

Security Enhancements with this new Release

  • angular framework upgrade to 15.2.2
  • improvement of security server settings by using .htaccess files 
  • the introduction of a 2-factor authentication with confirmation code sent either by SMS or by email.

MySQL8 & ElasticSearch8 Support

We know you have been waiting patiently for THIS!!!
We have even added optional username & password support for ElasticSearch.

Easy management of layout roles & logic hooks in the workbench

We have made the life of administrators much simpler!!
There won’t be the need to access the database anymore in order to enter the settings.


Release Details 2023.01.001


CR1000971/CR1000972: 2-Factor authentication [hotfix]

Behaviour was wrong on first login after turning on 2-Factor authentication

CR1000977: fixes for Extended PDF viewer [hotfix]

PDF preview can now be rendered without any browserextension (see CR1000900). The preview didn't work properly. It is now fixed.

CR1000966: Retrieving module lists for current user [hotfix]

The non-global lists created by a user was not shown in the dropdown. This fix enables to retrieve all global and private lists created by the current user.

CR1000965: Caching of the activity stream configuration [hotfix]

activity stream configuration is now being cached by the system. It might happen that the activities are shown in the "past" and "planned" activities tabs. This has been taken care of by adding a scope when retrieving the configuration for activities data (in the SpiceFTSUtils.php file).

CR1000960: Color Picker in CI manager does not display the colors[hotfix]

Only white squares were displayed in the color picker panel. Now the proper colors are displayed.

CR1000959: Entry in Config Table overwrites value in config [hotfix]

Entry in Config Table overwrites value in config.php

CR1000958: MSGraph removed query parts based on package name [hotfix]

The config for MSGraph synchronization used to be stored in the same table as EWS configs. We split applicaitons and had to cleanup some code.

CR1000955: CacheViewer: fix for display [hotfix]

Key search in standard file caching wouldn't deliver nay records. Now fixed.

CR1000952: QuestionSets [hotfix]

Cleaned up special Field, only used in a custom branch.

CR1000946: Module qualifications set deprecated [deprecation]

Module Qualifications located in User Details will be removed in 2023.02.001

CR1000944: DictionaryVardefsParser: field set to required when it is not. [bug]

Required field was not interpreted from the proper table field. Fixed. Had the effect that a non required field would have been set required depending on system setup.

CR1000896: Specify sort order of module list in parent field [change request]

Until now order was set by module name translation. We added the parameter sortbyparenttypes that will force to sort modules as entered in the parenttypes input field

CR1000893: ValidationManager: see deactivated rules [change request]

Currently when you deactivate a validation rule, the only way to re-activate it is to go to database directly and set the active flag. Now deactivated rules are highlighted in the list and can be activated by setting the active flag directly in the interface.

CR1000879: Human Capital Management [feature request]

Managing employees career within the company is now possible. SpiceCRM features an employees module in which you can administrate acquired skills, have an overvew of trainings and manage measures all around their job career. The Human Capital Management package is part of SpiceCRM more edition.

Post deployment action: load hcm package

CR1000894: Speed up Questionnaires [change request]

CR1000903: Modelutilities: fix in compare cases [bug]

Model validations using lessequal or less couldn't be evaluated properly since modelutilities compare did not evaluate less and lessequal but wrongly named cases lesser and lesserqual. We corrected the case values, kept the old ones in case any custom component would use the old case values.

CR1000887: Additional Validation rule action set_value_from_user [feature request]

It is now possible to set a value that is set for the user or one of its preferences

CR1000900: Extended PDF-Viewer [feature request]

The Extended PDF-Viewer helps to see the pdf documents without installing PDF viewer extension for browser.

Post deployment action: run npm install

CR1000853: Workbench Interface to administrate hooks [feature request]

Administrate LogicHooks and WebHooks through new workbench interface.
- Add/Edit/delete when workbench core editable is turned on. Else only list hooks per module including generic hooks with *
- Add/Edit/delete custom hooks
- activate/deactivate Hooks
Caution: core hooks are delivered per package. Re.loading a package would reactivate a core hook . That's why we currently use a custom entry with the same hook configuration as the core one but with hook_active = 0. We may think of a better way to hande this.

CR1000892: SpiceImport with method choice [change request]

adding a functionality into SpiceImport to allow choosing class and method for data handling depending on requirements

CR1000917: Angular Upgrade to version 15.2.2 [Security]

CR1000771: Workbench Role Manager - interface to administrate the main menu for a role (role- modules allocations) [feature request]

Allocation used to be done manually in the sysuirolemodules table. We now introduced a visual interface to administrate the records.

CR1000881: ServiceQueues and ACL permissions on tickets [feature request]

Allocate orgunits to service queues and interprete ACL permissions to access tickets.

CR1000906: KReporter send scheduled reports [bug]

Sending a KReport per email as CSV or Excel to one or multiple email adresses.

CR1000880: ActivityTimeLine: missing ActionMenu next to long subject text [bug]

When the subject a call or meeting or an activity is very long the ActionMenu (arrow down) used to disappear. Now corrected.

CR1000919: BWC ServiceFeedbackController [change request]

Little correction in ServiceFeedbacksController::saveAnswers: create the evaluation record; set servicefeedback status to completed

CR1000873: Harden /api/.htaccess [Security]

We added some settings to the .htaccess and ./api/.htaccess to reinforce application security

CR1000902: SpiceImport scheduled processing with line limit [change request]

adding a functionality fo the Spice importer to process big files in parts in the scheduler

CR1000891: KReporter Treeview fixes [bug]

Optional component name in the presentation layer for a tree view was not returned to frontend and therefore not rendered in the report. Additional fix to properly store field IDs needed to group for the tree.

CR1000926: Calendar - Month View Add On Click [feature request]

Added on click add modal for calendar month view.
Bug fixes displaying multi and absence events.

CR1000937: Avoid updating specific configuration records on package update [change request]

Some packages contain basic configuration records that may be changed as used in the instance. As an example: service ticket number ranges. In case of a package update the range would be overwritten which would reset the next number to get for a ticket. The list of respective tables is SpiceUiConfLoader::insertOnlyTables.

CR1000786: EventBooking Panel and Manager [feature request]

Capacities can be defined for an event. These define certain stations that provide services in the context of blood donation. Each of the capacities has a period of use, which may also deviate from the dates of the appointment. Each capacity also has associated appointments that can be automatically created according to a template (e.g. appointment slots of 15 minutes each). These slots can then be booked as part of the reservation.

Capacities can also be pooled (e.g. a resource with a capacity of 4 - if 4 offtake stations are operated). In this case, there is no dedicated assignment to a specific capacity, but to a pool. The final allocation takes place ad hoc on site.

CR1000882: Refactored property duplicate_merge to boolean [change request]

Variable definition property "duplicate_merge" is now a boolean. deprecated value "disabled" and "enabled" are now respectively false and true. All definitions in vardefs files were cleaned up. When the property is not set then it means true.

CR1000898: added Elastic8 support to Installer [change request]

added the required additional fields to the fts settings in the installer.

this mainly is about https support, the ssl verify options as well as username and password for an authenticated connection.

CR1000908: Spice Importer - Added Reject Key on Insert [feature request]

Add new functionality to Spice Importer that allows setting a selected key value when loading new records to avoid the creation of duplicate entries.

CR1000841: Revision Notifications [feature request]

Post deployment action: Documents Package

CR1000921: Chrome Extension - Manifest V3 [change request]

Upgraded the spice chrome extension manifest to version 3 with inbox sdk.

CR1000850: Specific ID for Questions [feature request]

The specific question ID is questionnaire-wide, is non-random and is to be defined by the user.

CR1000868: Lightening Design Upgrade to 2.20.1 [Security]

CR1000883: CampaignTasks - Targets Manager [feature request]

Created the campaign task targets manager to adjust the targets for a specific campaign without the need to adjust the original target lists.
The manager is accessible through the manager button in the campaign task details view header.
The manager view enables the user to include extra entries to an auto generated inclusion list. It is also possible to exclude entries to an auto generated exclusion list which will be considered when the campaign log is generated. The user can mark entries as seen to work the list on different phases.

CR1000930: Dropdown Trigger - Added Mobile View Sticky [feature request]

Added option stickyOnMobile to SystemDropDownTrigger directive make the dropdown container stick to the bottom of the window in mobile view. This is now enabled for the date picker.

CR1000863: SpiceSoap fixes [bug]

Some fixes to be really be able to use that old soap integration

CR1000867: Angular Upgrade to version 15.1 [Security]

CR1000905: Channel field for EventBookings [feature request]

Save the origin/provenance of a Event Booking (CRM or Web).

CR1000910: Convert prospect to contact or lead [feature request]

CR1000929: Security Improvement [Security]

Used hash_equals to comapre user password hash to prevent timing attachs.

CR1000858: MSGraph - Exchange Hybrid [change request]

For customers moving from Exchange to 365 we split the ms graph mapping tables from the ones meant so far for both exchange and 365. It is now possible to switch the type of synchronization between Exchange and 365 in the user preferences.

Post deployment action: download graph packages, repair database, repair dictionary cache, repair file cache

CR1000927: LDAP Login - use optional filter for login check [change request]

It is now possible to define a json string that will be rendered for filter option when performing the User login. This is needed when you need to check on a group dependency in a hierarchical LDAP group structure by applying the "memberof:1.2.840.113556.1.4.1941:" filter.

CR1000862: Upload files: set a default category [feature request]

It is now possible to set a default category to the component rendering uploaded files. When the parameter is set with the ID of an atachment category the file container renders the file list of this default category. Furthermore we fixed 2 bugs: reload the list after a file was deleted and allocate the selected category to an upload.

CR1000864: System configuration to cache files [feature request]

We refactored SugarCache to SpiceCache to improve performance on loading system configurations (load tasks, language labels, dictionaries...) . Files are stored in the server tmp folder or as defined in your environment. The files can be cleaned up by using the "repair external cache" action in the workbench. They will be automatically created as they are needed. The file caching is turned on per default. If you want to turn it off, check the box in the general settings-
For debugging purpose it is also possible to see the content of the cache files: use the cache file manager in the workbench

CR1000839: Deployment tool - improvements phase 2 [feature request]

Added System Landscape management to connect CRM systems together and handle the deployment process (loading released packages, deployment files and data)

CR1000901: Text display: strip HTML tags [change request]

In a list view or in a dashlet we can already display truncated text. If this text contains HTML Tags, then the tags will be visible which makes reading the text almost impossible. We added the option "striphtml" in the fieldText component. When set html tags are stripped so that plain text can appear.

CR1000708: Integrated PDF Viewer [feature request]

Integrated pdf viewer library to render pdf content. This replaces the required chrome extension.

Post deployment action: Run nmp install

CR1000943: Shortext cut on multibyte character will prevent load task "user step 2" from success [bug]

In Favorites and Reminders we slice the text for display purpose. If slice would fall on a multibyte character it would break the script when trying to json encode the results. This has been corrected.

CR1000904: Field Categories: added ESC key press event to hide category tree [feature request]

When the category tree is open there was no other possibility to select any category from the tree in order to close it. Now users may press escape key on their keyboard

CR1000801: SpiceMailToken [feature request]

The SpiceMailToken adds a sequence of letters and numbers to the email address of your mailbox (i.e. crm+26df3dcb9c24e73089808c27a552bab0@twentyreasons.com). With this hashed email address you can easily send emails outside of the CRM.

When retrieving your emails in CRM, the Mailbox (where you used SpiceMailToken) will automatically link the Email to the Bean. You can create multiple SpiceMailTokens and send them in one email. All of them will be found by the processor and linked to the Bean.

Techn. descr.:
The SpiceMailToken adds a sequence of letters and numbers to the email address of your mailbox (i.e. crm+26df3dcb9c24e73089808c27a552bab0@twentyreasons.com). This sequence is a hashed combination of BeanName and BeanID. The token is being hashed with md5.

In order for the button to be visible, please make sure that your Bean is of type “link” and the module “Emails” is not missing in the vardef declaration of your related bean.
Please add to your mailbox the following entries:
processor_class: \SpiceCRM\modules\Mailboxes\processors\SpiceEmailTokenInboundProcessor
processor_method: processTokenEmail

The SpiceMailToken-Button is visible in the Activities panel next to the filter button. The button is has a hashtag symbol. When you click on it, the hashed token email address is automatically copied and you get a confirmation (a green toast with your hashed email address)

CR1000897: enable adding ObjectListViewContainer in a separate subtab [change request]

adding a capability to open a module listview in a separate new tab

CR1000889: New method ACLAccessFTSQuery() on beans to define additional access logic for FTS query [feature request]

public function ACLAccessFTSQuery(): array
The method is only called if it exists. We pass the aclFilters array per reference and enrich with specific filters. Array is built as in SpiceACL::getInstance()->getFTSQuery
getAclFTSQuery is called if it exists in SpiceFTSBeanHandler::getModuleSearchQuery()
Example of use: users can only access service tickets if the tickets are linked to service queues that the users are allocated to.

CR1000869: SpiceLogger and LogViewer update Stage I [change request]

Additional column sub_loglevel for syslogs

CR1000916: Frontend - Cancel Pending Requests [feature request]

Added the functionality to cancel the API pending requests on tab close, or for certain action.

Improved SystemOverlayLoadingSpinner and added cancel button for the spinner. Added @Inputs asOverlay and cancellable to SystemSpinner.

CR1000856: DemoData generation for Calls and Meetings [feature request]

Generation demo data for calls and meetings for testing purposes.

CR1000871: Set a default dashboard set for a role [feature request]

It is now possible to set a dashboardset ID in a role definition so that this dashboard set is used as default when the user has not his dashboard set preference

CR1000886: sugar_version.php removed [change request]

File ./api/sugar_version.php was removed.
The version is now detected on installation by reading ./package.json (in the root folder of SpiceCRM). Old sugar_version.version variable is deprecated. Use SpiceConfig::getSystemVersion() to grab the value if needed in backend logic. Value is stored in config table, system > version

CR1000909: Global & List View Header - Layout Adjustment [feature request]

Added Collapse Button to the global header to gain more of the page height and also reduced the list and details view header height for users who use SpiceCRM from laptop.

CR1000907: EmailTemplateEditor: fix module source for preview [bug]

The configuration in EmailTemplates would enforce "Contacts" as the value for preview module. This was changed by introducing the component config variable "previewForBeanField". When this variable is set in the use of the component, the proper module shall be available in the preview. Please, reload emailHandling package after upgrade.

Post deployment action: Reload emailHandling package

CR1000918: Audit log display user name for assigned_user_id value [change request]

Workaround to display the user name in the audit log instead of user ID for changes in field assigned_user_id. Because of performance lost, we created the SpiceConfig variable auditlog.readable which needs to be set to true in order to perform conversion from value to user name. This workaround is only temporary.

CR1000877: Global Navigation - Loading Progress Bar [feature request]

Added pending requests count functionality to the backend service to draw the global navigation progress bar

CR1000922: Attention developers! package.json and npm install [change request]

After latest Angular update we had to workaround in order to make sure that packing the application (npm run build) will provide the right outcome. Please follow these instructions before you run npm install,.Please run
npm config set legacy-peer-deps true
Then run
npm install

CR1000866: elasticsearch 8.5 [feature request]

elasticsearch support 7.5 and higher within 7. Now elasticsearch 8.5 and higher is available. We also added user name / password support to login to elasticsearch and extended the number of options you can set directly in FTS Connexion settings.

CR1000911: Review 365 packages [bug]

msgraph package to download the 365 default mapping for Calendar events, tasks and contacts is now available in package loader under "contents"

CR1000872: SystemTree - Item Custom Actions Template [feature request]

Added @Input customButtonsContainer to SystemTree Component to render the provided template as the item custom actions.

CR1000941: Validation rules events [change request]

old event name "all" is no longer checked by the validation rule service. Please, make sure you check the boxes "initialize" and/or "change" when configuring your validation rules.

CR1000899: add sort icon to storable columns [feature request]

added a sort icon that indicates sortable fields in listview headers and relatedlist headers. Making it thus easier for a user to immediately see which columns can be sorted in a view.

CR1000885: Refactored sugar_config to spice_config [change request]

Deprecated variable sugar_config is now spice_config.
Backward compatibility added to ensure safe upgrades: content of sugar_config will automatically be passed on to spice_config.

CR1000854: Rich Text Editor: double scrollbars [change request]

In the e-mail add container in the Activitystream, the component for the richtext editor has a scrollbar. When the e-mail text gets longer, an additional scrollbar is automatically displayed in the text are. This confuses the users. Is it possible to remove the component scrollbar and just keep the text scrolbar?

CR1000924: sysservicecategories is no longer required per default [change request]

Field sysservicecategories is no longer required per default in modules ServiceTickets and ServiceCalls.

Post deployment action: I case you have any implementation where the requirement is important, please add a validation rule to make the sysservicecategories required

CR1000913: Login Improvement - Keep Me Logged In [feature request]

Added keep me logged in option to enable the the browser to remember the user login after closing the browser tab.

CR1000874: PotentialManager bug fixes [bug]

Some fixes due to older architecture changes: consider the switch of the company code and load proper data; consider refactoring of backend route applying getRevenues()

CR1000912: Security - Two-Factor Authentication [Security]

Added two-factor authentication methods for more secure verification process. Settings can be selected under workbench > Login management.

Post deployment action: Repair database
Reload core package
For SMS method package Text Messages and a mailbox Required
For Email method package Email Handling and a mailbox Required

CR1000865: MySQL 8 compatibility [feature request]

Using MySQL 8 is now possible


Breaking changes


Review your configurations like model validation conditions or any custom component using the modelutilities compare method. Use less instead of lesser. Use lessequal instead of lesserequal.


Create new column duplicate_merge manually on any Upgrade
ALTER TABLE `sysdictionaryitems` ADD COLUMN `duplicate_merge` INT(1) NULL DEFAULT '1' AFTER `labelinputhelper`;
ALTER TABLE `syscustomdictionaryitems` ADD COLUMN `duplicate_merge` INT(1) NULL DEFAULT '1' AFTER `labelinputhelper`;
ALTER TABLE `sysdictionaryrelationships` ADD COLUMN `rhs_duplicatemerge` INT(1) NULL DEFAULT '1' AFTER `package`;
ALTER TABLE `sysdictionaryrelationships` ADD COLUMN `lhs_duplicatemerge` INT(1) NULL DEFAULT '1' AFTER `package`;
ALTER TABLE `syscustomdictionaryrelationships` ADD COLUMN `rhs_duplicatemerge` INT(1) NULL DEFAULT '1' AFTER `package`;
ALTER TABLE `syscustomdictionaryrelationships` ADD COLUMN `lhs_duplicatemerge` INT(1) NULL DEFAULT '1' AFTER `package`;


If you already use the 365 integration, you will have to download graph packages after the update. Then move your custom mapping definitions to the new custom tables defined for graph integration. Re-test the synchronization before you go productive with the update.


Create additional column manually for table syslogs!
Statement for MySQL: ALTER TABLE `syslogs` ADD COLUMN `log_sublevel` VARCHAR(25) NULL DEFAULT NULL AFTER `log_level`;


The pending requests for model.service, modellist.service etc will be canceled in the Angular ngDestroy hook.
Be aware that this behavior will lead to cancel requests initiated by a child component of a modal when the modal is closed before the requests are done.


Validation rule service now only check events by name. Possible values are: initialize | change
Please, check you validation rules in your customer projects and check the proper boxes where necessary.



CR1000940: Deprecated workbench > Repair database entry

The menu item "Repair Database" in the workbench is now deprecated. It only renders a description of where to find the buttons you used to have udner "Repair Database"

CR1000932: Variable definition field type json to longtext is now deprecated

We will use column type json from 2023.02.001 on. Make sure you have dbType property in your custom definitions to keep the text type if wished. Or make sure your json column contains a clean JSON string without break lines in order to upgrade the colum type to JSON in SpiceCRM version 2023.02.001.

CR1000826: Cleanup SpiceUtils

Set "deprecated" all unused functions in SpiceUtils.
Removed include/utils.php
moved sugar_die() to SpiceUtils::sugarDie()
Removed UnifiedSearchAdvanced.php


The “Unicorn” release is out!
This release contains many little fixes and completion steps regarding 365 integration and marketing automation.

Full 365 Integration

In the last release we implemented the event calendar. Now the Integration covers address book contacts, tasks as well as mailing. Integrated with the 365 Single Sign On functionality, CRM users will have full synchronization with their 365 activities.

Marketing automation

SpiceCRM offers simple marketing automation capabilities that will suit small and medium companies. The combination of campaign & workflow modules is a powerful tool that can be used to manage the response of a marketing campaign. Send a mailing, define the actions to be triggered on incoming response, or automated reminders or the handling of bounced emails.

Event management & campaigns

A typical process when dealing with events is to invite targeted people, then check on who registered, who should get a reminder, hold the event and finally send a satisfaction survey to those who attended the event. The new feature makes it possible to create registrations from multiple target lists, and then manage mailings according to event registrations and their status within a campaign task.

Release Details 2022.03.001

CR1000763: Mandatory TOTP Authentication [feature request]

Generation of the TOTP authentication during the login process.

CR1000759: Homedashboard message handler for wizard [change request]

Included a case for "handleMessage" in homedashoard.ts, that should reload the Dashboard upon completing a wizard.

CR1000803: Fix currency administration [bug]

Save a currency in currency administration panel would not work because the route called was deprecated. The route is now updated from admin/writesettings to configuration/settings.

CR1000851: Save record for sysauthconfig in workbench does not work [bug]

Save logic would break since a check is made on id field which is not present in the table sysauthconfig. Added missing id field definition for table sysauthconfig.

Post deployment action: repair/rebuild, run add id field

CR1000649: View Module Folders [feature request]

CR1000832: Telephony - Herold Search [feature request]

Add herold.at search API on the telephony popup docked call.
If the caller number was not found in the CRM, the herold.at search will be done.

CR1000838: EWS handle Body value according to Text | HTML mapping [bug]

Outlook sends a full HTML file in event texts. We extract the content of the body tag, and when the field mapping for the event Body is set to "text", we strip tags so that text only is saved in the CRM.

CR1000814: System category tree: added option sort by translated name [change request]

Entries in the category levels have been sorted by key. Now it is possible to define in the fieldconfig of a "categories" field if the sorting shall be done by key(will be default) or by translated name

CR1000807: ServiceTickets: save prolongation reason to sladeviation_reason [bug]

Prolongation description is now saved to the ticket in field sladeviation_reason

CR1000689: Calendar - Search [feature request]

Added search input to calendar to filter the events based on the search term.

CR1000779: MS Graph - ToDo Tasks Integration [feature request]

Added microsoft graph ToDo Tasks integration. Please note that the tasks synchronization requires a login to the microsoft account. Use Single Sign On capability with 365 in the CRM to make it easier for the users.

CR1000822: Address Fields - Referencing Feature [feature request]

Added referencing feature to the address field, that enables the address fields for a bean to be referenced by other related bean. Like contact address could be referenced by the related account address. Each time the account address is updated, the contact address will be updated by the system.

CR1000830: new route to retrieve bean with external id [change request]

added new route /module/{beanName}/{externalId}/external to allow retrieval of Bean by ext_id if the module has an external id

CR1000818: Calendar translations for short version of weekdays and months [change request]

Translation capability was missing in some parts of the calendar: short day names and short month names in the views: day, 3 days, week, month and schedule.

CR1000775: Cleanup deprecated module CampaignTracker [change request]

Removed ./api/modules/CampaignTrackers folder ; removed tracked_urls link defined in Campaigns module

CR1000800: Agreements adaptations [feature request]

We moved account_id + consumer_id to a prent field capability.
We added many-to-many relationships with a role for accounts and contacts.
Drag&Drop of a file will generate an Agreement Revision. We also added agreement conditions from which we can trigger workflows like a sending a reminder when validity date of the agreement is approaching.

Post deployment action: UPDATE agreements SET parent_id = account_id, parent_type="Accounts" WHERE account_id IS NOT NULL AND account_id '' AND deleted=0;
UPDATE agreements SET parent_id = consumer_id, parent_type="Consumers" WHERE consumer_id IS NOT NULL AND consumer_id'' AND deleted=0;

CR1000793: Table name definition for dictionary SystemHolidayCalendar is wrong [bug]

Table name shall be systemholidaycalendars (not systemholidaycalendar)

Post deployment action: Migrate entries you might have in systemholidaycalendar table to systemholidaycalendars after the repair/rebuild action

CR1000809: LDAP Authentication fallback to default CRM Authentication [change request]

In case you have users that shall login through LDAP and other external user having no Active Directory user, login logic now calls the default CRM authentication when the user was not found in Active Directory. Please, note that the external user shall have external_auth_only set to 0.

CR1000778: Add popupHelper property to dictionary manager [change request]

It should be possible to define the helper label to use for a field defined in a dictionary item.

CR1000791: Set some default preferences during installation process [change request]

Additional installation step: set some important default preferences like date time formats, number format... so that users will no longer be prompted to set those after first login.

CR1000687: Spice EWS - Config Request Options [change request]

Added set curl options to EWS fetchEmails to enable overriding the request configuration from spice config.
Config can be passed in config table in JSON format.

CR1000808: LDAP Authentication fixes [bug]

Missing functions in LDAPAuthenticate class; added capability to add further ldap attributes that shall be retrieved. A new column ldap_fields was defined to that purpose in the table ldap_settings.
Enter fields as a json string like . An array of key value pairs corresponding to ldap attribute name and crm property name on user object.

CR1000860: ServiceTicket save function revisited [change request]

Old logic: status like In Process, Pending Input, Closed would remove the assigned user on save.
New logic: we keep the assigned user as set during "take on" or changed later in the process.

CR1000833: Phone numbers Parser functions not consistent [bug]

When Telephony package is in use, phone number formatting is checked on save and adapted for elastic search index. We harmonized the logic guessing the country code.

CR1000837: EWS sync only to exchange on critical change [change request]

Currently any change in a call triggers an update to Exchange. An update is only necessary when 1 of the mapped fields is changed. We added a check on those fields.

CR1000831: add option for ext auth only when adding user [change request]

added new option checkbox when creating user to set ext_auth_only flag so users can only login with LDAP or OAUTH. small cleanup in add user dialog.

CR1000852: select editor for email templates [change request]

It is now possible to set with which editor a template shall be edited: rich text editor, page builder or html.
Default is html.

CR1000835: Actionset Manager: fix edit mode after adding new actionset [bug]

After adding a new custom actionset to a module, we had to unselect/reselect the actionset so that edit mode would be turned on. The mode is now checked on change so that the workaround we just described is no longer necessary.

CR1000834: Repair a list of given dictionary names [feature request]

Make it possible to repair only a selected dictionary

CR1000796: MSGraph: clean html sent by 365 [change request]

MSGraph delivers the content for event description as a full html page with style tags and unnecessary overhead. We grab the content between the body tag to save to the CRM.

CR1000765: PDF Export of Entire Questionnaire Evaluation [feature request]

CR1000762: Added assigned user id to campaign log [change request]

The campaign log record now contains the assigned user id of the campaigntask.

CR1000824: Improve performance by settings additional table indexes [change request]

Tables involved:

CR1000776: MS Graph - Mailbox [feature request]

Added Microsoft Graph Mailbox Transport Handler. Now it is possible to add a Microsoft 365 global Mailbox and fetch emails to the CRM

CR1000795: Fix retrieve SpiceAttachments Categories [bug]

The where clause would only be applied correctly when the field is_system contains 0 or 1. The query fails when the value is null. Default value 0 is now defined in spiceattachments_categories table and the is_system flag can be set in workbench interface. Update existing data by setting 0 where is_system is null after you made your SpiceCRM update.

Post deployment action: Update existing data by setting 0 where is_system is null after you made your SpiceCRM update.
Reload core package to get proper field list in workbench.

CR1000799: MSGraph: encode microsoft ID when passed to graph api [bug]

Microsoft generates IDs that may contain a slash. We need to double encode the slash

CR1000787: Fix set all notifications as read [bug]

Set all notifications as read would set not only the current user's notification as read but also the notifiations of other users. Only the current user's notification shall be set as read.

CR1000806: Improved logic to set respond until and resolve until dates for ticket according to SLA [change request]

Logic now tries to find proper match in definitions before it falls back on default SLA.

CR1000774: Report Designer - Relationship & Audit Fields [feature request]

Added Relationship and Audit fields to report designer tree

CR1000745: Microsoft Graph Service Integration [feature request]

Added Microsoft Graph Service Integration to handle Microsoft Calendar and Email APIs integration.

CR1000849: add apiOnly as access option for REST Route [change request]

added the option to add apiOnly as validation option for a route so that only api users can access that endpoint.

CR1000768: add ExecuteCopyRules on Parent Field [change request]

add an option to set ExceuteCopyRules on a parent field similar to as it is set on a relate field.

CR1000816: ServiceTicketNotes: strip tags in subject [bug]

Added a strip_tags when extracting the value for the field name in ServiceTicketNotes; Changed extracting to mb_string in the truncateString util function.

CR1000836: SpiceTemplateCompiler: pass on compiler and bean to SystemTemplateFunctions [change request]

Make bean and compiler usable for the SystemTemplateFunctions.
With the compiler you can get additional data like "template" or "root_template".

CR1000859: update SOAP [change request]

upgraded the SOAP Implementation In SpiceCRM making this Support PHP 8.
- directories soap and service have been removed
- soap has been moved to include/soap and has been cleaned out
- the legacy version concept has been abandoned
- vendor/nusoap has been updated and legacy files removed
- new Soap Classes have been namespaced and cleaned up
- .htaccess has been amended to reflect the new redirect for SOAP
- composer.json has been updated to properly load classes for nusoap
- some legacy methods have been removed

CR1000828: Increased default min height for text fields [change request]

Fields of type text (usually a description field) used to have a minimum height of 38px. We increased to 80px.

CR1000811: Fix date valid from - to not considered in the numberrangeallocation search [bug]

Allocation ranges have a validity time period. This time priod was not considered in the search query meant to retrieve the applicable number range. Valid_from and valid_to dates are now required in table sysnumberrangeallocations.

Post deployment action: Set proper valid_from and valid_to dates in current sysnumberrangeallocations records before release update.

CR1000784: Angular Upgrade 14.2.0 [change request]

Upgraded Angular to 14.2.0. Upgraded typescript to 4.8.2 and other related libraries to the latest version.

CR1000794: Fix buildSQLQueries: check if repairtable SQL is empty [bug]

Do not execute the sql query generated by repairTable if there is no query to execute.

CR1000805: Improved ServiceTicket prolongation modal window [change request]

2 new parameters were added to the ServiceTicketProlongModal component:
componentset: define a component set in Service Prolongations module that will render a fieldset in the Service Prolongation Modal view. Backward compatiblity with versions previous to 2022.03.001 is ensured. Set the component set in ServiceTicketProlongModal component in your ServiceTicketProlongations module configuration.
prolongmaxdays: define the maximal number of days in the future that are selectable with the date picker. Default is 5.

Post deployment action: reload service package

CR1000721: Global Footer: Hidden Componentset [feature request]

Added a config option to the GlobalFooter component to allow rendering a dynamic hidden set of components in the application footer.

CR1000783: BugFix mark notification as read [bug]

It wans't possible to mark notifications as "read". They would appear on next login again. Route definition was under the deprecated KREST. Now updated to Folder api.

CR1000840: Validations rules: sort field lists by field name [change request]

For a better usability the field lists are now sorted by field name in alphabetical order as well as the rules list. We also fixed a display bug occuring after adding a new records. not saving but switching to an existing record.

CR1000820: Color for e-mail Send Button in Activity Side Bar [bug]

Added red color using slds-button--brand in sysactionsetitem EmailSendButton in actionset Emails ActivityTimelineAdd Actions

Post deployment action: reload emailhandling package

CR1000825: Modified Default FTS config for Accounts [change request]

Searchterm Analyzer "spice_ngram_all_search" is now set for Accounts. This enables search chars like & to be considered in search strings. The new setting will be retrieved on installation only. Set manually in existing instances since sysfts records are not updated on package core load (since it would overwrite possible customizations).

CR1000797: New field type fieldCountries for frontend [feature request]

load countries from syscountries table as enum field

CR1000777: Deployment Tool - Improvements phase 1 [change request]

Refactored the change requests tool.

CR1000812: Telephony API - Handle Incoming Call [feature request]

Added a new generic route to the telephony API to handle the incoming calls.
Also adjusted the frontend indicator component to enable using the generic feature.

CR1000823: Fix fieldCategories: reset deeper level values on change when less levels are selected [bug]

Values in deeper levels need to be reset in bean on update when new selected levels do not go as deep as older values.

CR1000842: Bug KReporter Pivot table [bug]

Pivot table was emoty due to empty results caused by a limit 0,0 in the query.

CR1000788: API log configuration deactivated on edit [bug]

When you edit an existing API log configuration, the activation status used to be set to null. It is now kept as it is. Activated status is now green and no longer yellow.

CR1000781: Event Campaign Management [feature request]

Handle campaign steps for event registrations management.
Fill the gap to handle campaign tasks according to a registration status.

CR1000857: store language translations to session variable [change request]

Language translations are loaded on login but also when dictionary domains are loaded which results in a lack of performance. As a first step in gaining performance, we now store the language translations in the session. In a second step (planned for 2023) we will cache the contents in files.
We also added a util method LanguageManager::getLabelTranslation() that returns the array containaing the various translations for a single label in a single language.

CR1000770: Admin shall be able to setup TOTP for a user [change request]

Users can turn on one time password authentication (TOTP) authentication in their User profile. An admin user shall be able to setup the TOTP for the users. An admin user shall also be able to turn off the TOTP for the user.

CR1000802: Check on systemvardefs before loading vardefs from database [change request]

Load vardefs from database only if system vardefs dictionary is on. This is important when migrating systems.

CR1000790: added checks when sending PDF [change request]

added checks in the dialog to send a PDF directly that the subject is set, the emailaddress is set a mailbox is selected. Otherwise the send button is disabled

CR1000815: Email To Object Modal - Optional Fieldset [feature request]

Added a new config optional email fieldset to enable displaying other email fields.

CR1000848: Calculate duration in activities [bug]

Fix for field types: fieldDateTimeSpan, fieldDateTimeDuration. Duration was n't calculated when Calll or Meeting is editied from calendar

CR1000829: Fix class name won't display in SchedulerJobTask [bug]

When opening a SchedulerJobTask the stored class name and method name would not appear in the display. This is now fixed.

CR1000827: add copy feature to componentset [change request]

add a copy option to the componentset editor

CR1000847: Editing Meeting, Call, Task directly in calendar misses start & end dates [bug]

Editing of activities from the calendar was not easy since start and end dates were not displayed.

CR1000810: Fix double formatting of ServiceTicket Number [bug]

Ticket number was formatted twice. No issue if Standard numbering with 10 chars was in use. But a range with 6 chars would have created 0000220034 instead of 220034

CR1000821: Fix number formatting in currency and float values [bug]

Entering correct large numbers was difficult because cursor position wasn't set right as soon as number group separator would appear.
Also added: the capability to override the user preference for decimal number precision when configuring the field in the fieldset. Applied to fields of type currency, float and quantity.

CR1000819: MS Exchange Sync: additional config parameter for port number [change request]

It is now possible to set a specific port which will be used to call the host of your exchange instance.
set $sugar_config['SpiceCRMExchange']['port'] in config_override.php or set in config table

CR1000789: Duplicate Check on related records [change request]

changed the logic for the duplicate check so that also related email addresses can be checked and are checked properly and not only records form the main bean

CR1000844: Cleanup old configurations including module Cases [change request]

We removed deprecated configurations defined for deprecated module Cases (removed from SpiceCRM by the end of 2020)

Post deployment action: reload core package

CR1000758: Reply to all email button [feature request]

The reply to all email button was added for the modules Mailbox and Emails. The modules are enhanced by the new button which allows the user to reply to all recipients of the message.

Post deployment action: Load the package emailhandling.

CR1000769: PDF Creation with Google Chrome [feature request]

CR1000817: Label for global search header dropdown list [bug]

A selected module from the list would set the technical module name in the display. Now corrected so that translation is displayed.

1000626: BeanFactory: Disabled Caching Module Data [change request]

Disabled caching module data by default in BeanFactory. Added config variable
['system']['module_cache_enabled'] to enable/disable caching.


Breaking changes


If you have any record in sysauthconfig, please add a guid in field id after deployment
id is not set as primary key to enable the update but it will be in the future.


The module no longer exists. Please, move it to custom if have it in use in any SpiceCRM instance


Migrate account_id and consumer_id to parent_id and parent_type in table agreements
Modify any copy rule or model validation you would have made in a customization


Migrate entries you might have in systemholidaycalendar table to systemholidaycalendars after the repair/rebuild action OR rename the tablemanually before you run repair/rebuild.


Please check you implementations. If you need the old behaviour. customize the ServiceTicket class and rewrite the save function


Field email_templates.via_spb of type boolean was renamed to editor_type of type enum with possible values richText, pageBuilder, html.
You will have to migrate your email templates. via_spb =1 shall be moved to editor_type = pageBuilder.
Remove column via_spb after migration.


Add params to all custom SystemTemplateFunctions.

Find all methods from the entries in syscustomtemplatefunctions

add the params "$compiler" and "$bean" to every method like in the core file SystemTemplateFunctions.php


In case you have the soap service n use (which is improbable) you will have to upgrade your cusotmizations if any or re-check the functionality with external systems


SpiceNumberRanges::getNextNumberForField() now requires the date fields in sysnumberrangeallocations to be filled. Set proper valid_from and valid_to dates in current sysnumberrangeallocations records before release update.


Field sysdictionarytablecontenttype was added to table sysdictionaryfields.
This will trigger an SQL error on login after you pulled.

Create the field manually:
ALTER TABLE `sysdictionaryfields`
ADD COLUMN `sysdictionarytablecontenttype` VARCHAR(16) NULL DEFAULT NULL AFTER `sysdomainfield_id`;


When listview is selected before pivot fiew, pivot view won'T successfully load
For a pivotview you need to start a fresh report


If you have any custom field that extends fieldCurrency, fieldFloat or fieldQuantity, please review your custom code

release 2022.02.001

We present SpiceCRM with its new logo and some great powerful features. This edition is more than a milestone. This is the realization of more than 10 years of experience in designing business processes. This release also contains an upgrade to Angular 14 which is in line with our philosophy to keep the framework up-to-date.

Workflow Designer

SpiceCRM is now equipped with a graphical interface to design workflows after proper Business Process Model and Notation. Define actions and tasks per mouse click, drag and drop the steps of the workflow and build your workflow as if you had a pen and a piece of paper. In the end the workflow configuration is comprehensible by anyone and can be used as a documentation of internal processes. Marketing experts will love this tool originated to lead to design marketing automation.

Workflow example

Company Organizational Charts

Picture your organization with the organization chart editor! You can now structure the CRM users within the organization and apply access permissions and workflows directly to these units. This makes the user administration much easier and makes it possible to involve teams / departments into the workflow processes.

Synchronize Outlook Calendar with MS Graph integration

After the successful integration for MS Exchange with Exchange Web Services, we are now introducing the MS Graph Integration. From a user point of view, this integration will not change that much. For companies using office365 or MS Exchange online with Microsoft Azure, however, this will make a difference. In this release we present the beta version of the integration with its 2-way event and contact synchronization.

Calendar Synchronization with MS Graph

Release Details 2022.02.001

1000108: vardefs to database (phase 1)

define custom fields and custom dropdown values in workbench dictionary interface; removed ./api/cache + ./api/language folders

1000337: Workflow designer using Business Process Model and Notation (BPMN)

https://github.com/bpmn-io as a modeling tool for BPM .. woudl bne nice to use as visualization for the Workflow engine

CR1000636: Re-structure workflow manager

This development is the prior work for 1000337. See 1000337 to learn about Workflow Graphical Interface feature.

CR1000719: DictionaryManager: check on reserved words

Added table containing keywords and reserved words. The current check now retrieves information from the table sysreservedwords.

CR1000732: Set Developer mode from Frontend on request

Added the option as an admin to set the developerMode flag on a request. Just set it from the user panel on the frontend and subsequent requests will be made with the developer mode set only for that requests. This is helpful to e.g. get full stacktraces back when requests fail.

CR1000735: CI Manager

added a new component and logic in the admin section that allows the user to change the images (login and headerimage in CRM) from the UI and also to set the colors adapting SpiceCRM to the customers CI.

CR1000736: Add username error message

Fix error message on username field during the registration of User

CR1000737: Create target group from module

Goal of the ticket: Creating a new Prospect List directly from a Bean (i.e. Accounts, Contacts, etc) with related Seeds.

CR1000739: Add Texteditor to CampaignTask of type mailmerge

Add Texteditor to CampaignTask of type mailmerge The subpanel LBL_MAILMERGE was extended by the text editor. When clicking on the D Tab, a tab for the Texteditor is visible. To see the preview, you need to save and click on the button Mailmerge in the upper right corner.

CR1000741: Make the display of sales document items more flexible

Make the display of sales document items more flexible so that depending on the sales document type you can decide how the list of items shall be displayed.

CR1000742: Leads Bug Fix link related account and opportunity

By converting the lead there wasn't set a relation for contact and account.

CR1000743: Relate an EventRegistration additionally to a consumer or a user

In this release we change the relationship to contacts to a parent relationship so that users or consumers can also be related to an event registration. Field contact_id is deprecated.

CR1000746: CKEditor Integration

CKEditor 5 was added to CRM. Now all fields where is possible to edit text work with CKEditor logic behind. This added new features for text editing such as creating and editing a table in text and others.

CR1000747: Opportunity cleanup

Field amount_usdollar is now set deprecated. Field amount_systemcurrency was added and shall take over the logic meant behind the amount_usdollar field in a proper way. We removed the n-2-n relationship to accounts and replaced it by a 1-2-n relationship since our experience shows that only 1 account triggers the opportunity. The table definition for accounts_opportunities was removed. Opportunity class was cleaned up. Please run breaking change migration statement after update!

CR1000748: KREST folder removed

Now that the KREST api is consolidated we dispatched the content of KREST folder to proper folders.
KREST legacy was removed
api/KREST/handlers/ModuleHandler.php moved to api/data/api/handlers/SpiceBeanHandler.php
api/KREST/controllers/ModuleController.php moved to api/data/api/controllers/SpiceBeanController.php
api/KREST/extensions/module.php moved to api/data/api/extensions/spicebean.php
CoreController::generateGuid moved to UtilsController::generateGuid
CoreController::getRedirection moved to UtilsController::getRedirection

api/KREST/controllers/CoreController.php to api/include/SpiceUI/controllers/CoreController.php
api/KREST/extensions/core.php to api/include/SpiceUI/extensions/core.php

if you have custom/KREST or custom/include/KREST or a KREST folder anywhere in custom, rename to api and adapt all namespaces containing KREST. Replace with api

CR1000750: Add Support to drop EML files

added support to also enable EML files (Outlook for MAC e.g.) to be dropped into activity stream and be parsed as Emails properly. Requires that mailparse extension is loaded on the backend server to work properly

CR1000751: PHP Upgrade: minimum requirement 7.4 + mailparse extension

Minimum requirements for PHP is now 7.4. Added the php extension mailparse as part of the required PHP extensions.

CR1000752: hide hidden fields in Auditlog

added field access check in the audit log so that hidden fields per ACL are not displayed there

CR1000753: async loading of Relatecontainer

changed the relate container so this only loads once the record ACL is available and we are sure we have a record and we can display the details. This is one a security measure but also saves on performance. This also ensures that hidden subpanels based on ACL control when links are disabled are not displayed and the data is not loaded.

CR1000754: Angular 14

Updated angular to 14.0.1

CR1000755: Fix in module configuration: display full role list

Role dropdown only contained the roles assigned to the current user. In this specific view all available roles shall be displayed.

CR1000757: Navigation paradigm i snow subtabbed only

The settings 'simple' and 'tabbed' were removed from navigation preferences. From this release on there is only 'subtabbed' paradigm.

CR1000760: Currency conversion rates cannot be administrated

When adding a new currency, the conversion rate is set to 0 which leads to division by zero error on save of a record using that currency (as an example in an opportunities). We added a check on the value for conversion rate and defined 1 as default value.

CR1000767: Orgunit/Assigned user dependency in administration tab

Added a component config variable "unlinkorgunit" in "ObjectRecordAdministrationTab" to be able to dissociate the dependency between selected assigned user and orgunit.

SpiceCRM 2022.01.001

Attention developers! We introduced webpack environment to speed up the compiling process and make live changes while working on frontend features. By using webpack we rely on an official bundling standard and reduce the complex maintenance of the gulpfiles. Please, check the webpack developer  guide  to learn how to generate the frontend app.
On backend side we made some refactoring in table column names, check the release notes below for details!

Marketing automation

New icon for reminders

Little design improvement to pleasure the eyes. Reminders may be set on any record in the CRM, helping remind you of some intentions you have.

The SpiceCRM partner network is growing!

We are happy to welcome sellmore (Germany) to our partner network, a 15 year experienced company in the field of CRM implementation. We also thank our partners  Bizlink (Bulgaria) and eVolpe (Poland) for their contribution to this release: improved language support for cyrillic alphabet in elasticsearch and optimized label handling.

Release Details 2022.01.001

1000619 : New button "save&send" for Activity Steam

Some activities have a save & send logic like Text Messages or Emails. New component ObjectActionSaveSendButton will display an action button that will trigger the save logic and display a 'data sent' toast back to the to screen.

CR1000682 : Template Variable Helper, Phase 3 (for SystemRichTextSourceModal)

CR1000685 : ACL for QuestionnaireManager

CR1000686 : Package Loader - Repair DB Popup

Open a confirm modal to execute repair db on error.

CR1000692 : fix maxlength in system-input-text

typo in parameter maxlengt which is now renamed to maxlength

CR1000695 : duplicate filter in fts config

added a new option in the fts module settings to also add a duplicate filter. This allows to e.g. configure that when checking a module like service tickets that only open tickets are considered as duplicates but not closed ones.

CR1000696 : Added type of Duplicate Check

added an option to the field duplicatecheck in sysmodules and syscustommodules.
- 0 means no check
- 1 checks continously online on any data change and holds the interaction with the user
- 2 only checks on save.
Option 2 was added for high volume modules where a check at the end is sufficient and a running check would potentially overload system resources

CR1000697 : Fix Repair cache and syntax in vardefs.ext.php file

Since singleton implementation of SpiceDictionaryHandler in 2021.03.001 custom/modules/[module]/Ext/Vardefs/vardefs.ext.php contain syntax errors (multiple appearances of 'use SpiceCRM\includes\SpiceDictionary\SpiceDictionaryHandler;' when multiple files are defined under custom/Extension/modules/[module]/Ext/Vardefs. We now catch the error by removing all lines containing 'use SpiceCRM\includes\SpiceDictionary\SpiceDictionaryHandler; ' and inserting this line only once at the top of the vardefs.ext.php file.

CR1000698 : new GlobalHeader reminder icon

add a new reminder icon in the global header tools to make reminders more visible also outside of the dashlet view.

CR1000699 : Added Shortcut CTRL-M to navigate to Menu

added a keyboard shortcut to CTRL-M to open the Menu and allow keyboard navigation to switch to another module using up and down keys and Enter

CR1000700 : Search Shortcut CRTL-S

added Shortcut CTRL-S to focus on the global search field

CR1000702 : Fix use email template in email combined with signatures enabled in richtext editor

When writing an email with the user signature turned on, the user signature will be removed if an email template is used. Fix was implemented so that existing inserted signatures will be kept within the text after selecting the email template.

CR1000703 : added option for acl check on global navigation manager route object

added a config option acl on Object GlobalNavigationMenuItemActionRoute. This allows adding an optional acl check on the item. Only if the user for the module and the acl has access the route item will be shown in the global module menu.

CR1000704 : new Component SystemPDFContainer

added a new Component SystemPDFContainer that can be used with the tag system-pdf-container. It accepts a base64 encoded string for a PDF content and renders this in a viewer.

CR1000705 : new options acl and requiredmodelstate on tab item components

added two new config options on the components ObjectTabContainerItem and ObjectVerticalTabContainerItem.
acl: checks that the user has access rights for the given acl on the model in scope
requiredmodelstate: checks that the model is in the required model state
If these conditions are not met the tab is not rendered.
This gives more options in configuration on tab containers and control better which tabs are being displayed.

CR1000707 : KnowledgeBooks Bug Fix edit Book

Edit Icon in Book selector won't react for edition.

CR1000710 : LMS modules setup

Basic modules to manage trainings, training units, contents and learning skills. Modules are packed to lms package (Learning Management) and are allocated to the 'LM' role

CR1000711 : Moved fts Initialize button

Moved the FTS initialize button to the fts status app and away from the setup. As this button several times caused confusion being placed in the fts setup app this was moved to the fts status.

CR1000712 : add new bulk index option

the bulk indexer allows to write a method indexBulk on a bean. The method will get the number of records to be indexed in the call and is expected to return the number of actual indexed beans. These methods need to handle the indexing then direct. Allowing this implementation make sense when very large set of data need to be indexed and the flexible modeling way from SpiceCRM will cause too long run times due to high frequent mass changes. The method can be implemented to read data right from the database and transform it into an elastic bulk index request that is submitted.

CR1000713 : Re-instate after_login hook for User login

Call the after_login hook

CR1000714 : Audit Log on text field displays empty values

Audit log did not display text changes when the field that is audited is of type 'text'. Now it does.

CR1000715 : MS Exchange: additional parameter to control update of participants

Currently update participants is always triggered on a save of the event bean in SpiceCRM even if the there was no change done that would affect participants. The additional property exchangeNotifyParticipants is created on the fly to the event spiceBean object and set to true. true means: update of participants will always be done after a save of the bean in the CRM. That is the behaviour we have been having all along.
The property exchangeNotifyParticipants value can be overridden in a custom event handler hook if necessary. You also may create a custom vardefs for exchangeNotifyParticipants to override the default setting we now have in SpiceCRMExchangeEvents constructor.

CR1000717 : SQL statements ticks cleanup

In the past it appears that some SQL statements were optimized for MySQL by using ticks on column names. This is now cleaned up to ensure database type compatilibity. This cleanup is step 1 of a larger column name refactoring that will be implemented in SpiceCRM.

CR1000718 : SQL cleanup of database type specific functions

Some SQL statements use MySQL related functions like NOW(), CURRENT_DATE(), DATE_SUB()... LIMIT parameter. These functions shall not be used to ensure database type compatilibity.

CR1000720 : Removed deprecated file containing of scheduler functions

The deprecated file modules/Schedulers/_AddJobsHere.php was removed.

CR1000722 : Fieldsets manager fix unlink global fieldset

After copying an original fieldset containing sub fieldsets itself it wasn't possible to remove a sub fieldset from the new created custom fieldset. Bug is now fixed

CR1000723 : Refactored columns names

Some column names in variable definitions are reserved words (in mysql, mssql or oracle). We refactored the names in the following tables:
- knowledgebooks.public to knowledgebooks.is_public
- accounts_potentials.role to accounts_potentials.account_role
- potentials.comment to potentials.commenttext
- servicefeedbacks.comment to servicefeedbacks.commenttext
- syscustomdomainfieldvalidationvalues.maxvalue to syscustomdomainfieldvalidationvalues.maxval
- sysdomainfieldvalidationvalues.maxvalue to sysdomainfieldvalidationvalues.maxval
- sysuicustomlibs.rank to sysuicustomlibs.libsequence
- sysuilibs.rank to sysuilibs.libsequence
- users_feeds.rank to users_feeds.feedsequence

CR1000724 : CleanUp Administration folder

Removed deprecated Administration class and its uses. Removed the sysmodules entry Adnistration from database reference. Removed old files that used to handle repair.

CR1000725 : New content package with default scheduler jobs

The content package 'Default Scheduler Jobs' will load a set of generic schedulerjobs that can be activated by the CRM administrator. Those jobs will cleanup log tables, take care of data indexing and process Spice imports.

CR1000726 : Cleanup deprecated tabs config in ObjectTabContainer

Lead converts into account but not contact. Convert lead modal does not close.

CR1000727 : Added Salesdoc item of type "Text" in convert sales doc core configuration

Package salesdocumentsconf contains now definitions to convert Text positions of type text when converted from a quote to a quote, a quote to an order, an order to a quote, an order to an invoice

CR1000728 : BugFix FTS search term encoding

Search with capital letters or cyrillic chars do not output expected results. Bizlink - SpiceCRM partner - implemented a fix.

CR1000729 : Allow the use of tranlation for combined labels

allows to use of tranlation for combined labels

release 2021.03.001

SpiceCRM 2021.03.001

We brought SpiceCRM to the next level! In this release we persisted in increasing security and backend code consistency by investing efforts in improving the administration of GDPR policy, the login & password security management & by refactoring the scheduled jobs management. We also reviewed entirely the email address management within the CRM dropping the last ballast of deprecated code in this area. Since SpiceCRM has now grown to reach a larger market we restructured the architecture so that  extensions  developed by partners are visible and can be easily integrated.  We also started investing time on details like improving the  usability of the template manager and by adding a mail merge functionality for print campaigns.

More flexibility in the Telephony Interface

Incoming number not recognized? Make a search before you create a new contact, update contact information on the fly and avoid creating duplicates.

Login management

Define the number of possible failed logins, administrate IP address blacklist, restrict login to specified IP addresses, set the password conditions by using the new interface.

Release Details 2021.03.001

1000570 : The core / extensions / custom structure

Restructure backend and frontend so that
- the core is easy to find & pack
- the more is identifiable
- partner extensions are visible
- customer developments have their area

1000605 : Copy Rules: Parsed Params in Metadata Service

Parsed Copy Rules Params Field as JSON in metadata Service on getCopyRules

1000606 : Calendar color for the past

Calendar entries in the past are now be greyed out.

1000607 : Incoming phone number from user extension

Phone extension may be stored in user information. Incoming call from internal extension will now be identified and displayed in call popup.

1000609 : Additional field for module ChangeRequests

New field techdescription. User may describe testing details related to the change request.

1000610 : New Module Agreements

Agreements with validity time frame. Define the agreement, allocate a category, upload one or more documents.

1000613 : Bug Fix - One2One Relationship - getJoin String with Alias

Reporter on one2one links the inner join link was not using the left side alias.
Change the getJoin Logic in One2OneBeanRelationship to consider the alias of the table if it was defined.

1000615 : Reports Designer - Added Custom SQL for Filters

Added two filter fields 'customSqlQuery', and 'overrideType'. customSqlQuery will replace to field name with the result of custom query and compare it with the field value. The overrideType helps to enable the desired operator options based on the override type.

1000616 : Gulp File - New Task Deploy

Added new task 'deploy' to gulpfile which execute the while packaging process tasks.

1000618 : TextMessage Templates

Administrate templates for text messages

1000620 : Email Address Handling - Refactored

Email addresses handling is changed to be done through the relationship between the specific module and the email address. A new function 'setPrimaryAddress' is created. Frontend is handling the email addresses through the relation link.

1000622 : CampaignTask status shall be planning on creation and not editable

Status of a campaign task is set dynamically by actions performed and can only be set 'planning' on creation.
A validation rule delievered by campaign management package makes sure of this.

1000627 : Remove cookie service

Remove the cookie service and the last usage for keeping the selected language of the user. So no cookies will be used any longer by spicecrm.

1000628 : List View - Infinite Scrolling Angular CDK

Integrated the Angular CDK Library in list view to improve the browser loading performance.

CR1000630 : Calendar - Bug Fix, Logic Improved.

Improved calendar sheets logic for better performance. Bug fixed on multi events display and zoom functionality.
Fixed rearrange the events in week and day sheets when show/hide other calendars.

CR1000631 : Status Network Buttons - Conditional Visibility

Added field 'required_model_state' to set the model state that required to display the action button. The model state is set by the model validation rules.

CR1000633 : Configuration for package blacklist compatible with config table entry

Until now the package blacklist could only be set config_override.php. Now it is possible to list packages in the config table by using a json string containing an array of packages.

CR1000635 : Refactor modules Jobs, JobTasks to SchedulerJobs, SchedulerJobTasks

Refactored modules names, some link names and corresponding UI config

CR1000637 : Exchange: make module handler customizable

Now it is possible to write your own module handler class for MS Exchange Sync by creating an entry is sysexchangemappingcustommodules table.

CR1000638 : AccountsCCDetails

Adding new field type for ccdetails

CR1000639 : Template Compiler - Enabled accssing the template class

Enabled accessing the template class by the the {template.key} syntax.

CR1000642 : Object Related List - Save to link only

Added 'saveToLinkOnly' flag to the ObjectRelatedList Component to prevent saving the relationship entry to the database. It just save the data in the model.data in the link object.

CR1000643 : Module Tasks - Set date start default interval

Added spice config variable ['task']['default_start_date_interval'] to be used to set the start date based on the due date subtracted the interval.
For interval syntax check PHP DateInterval.
Set due date field to required to prevent failing to load the tasks into the calendar.

CR1000645 : Validation Rules - Logic Improvement

Improved the logic of the validation rules. Cleaned up unnecessary option 'onChange'.
Changed 'on events' setting to a checkbox group.
Refactored the conditions and actions handling to field based inputs, where the value input type will be changed based on the field type.

CR1000646 : Add Tax Determination to CRM

Added the option to flexibly determine the sales tax applied to a salesdocitem. This is based on the company code country, the goods recipient country as well as a taxation indicator on the product. In additional on the product (and product variant) the option has been added to maintain prices as gross price rather than net price. This is catering to end consumer oriented businesses.

CR1000647 : Administration - Convert DB Charset

Added a convert db charset action in the workbench repair manager. This allows to convert the database charset or its tables to a certain charset type.

CR1000648 : Removed relationships cache file

/cache/Relationships is no longer needed. Removed, with the logic behind it. Relationships cache is now available in $_SESSION['relationships']

CR1000650 : Add option to hide empty subpanels

Added an option on the ObjectRelatedList component to hide the component if no related records are found. This is useful if related panels are not allowing records to be added but should only be listed if there are really records keeping the views cleaner

CR1000651 : Button for field email recipients

A button will be added to the field 'fieldemailrecipients'. It will enable to display email addresses from the parent related to the bean.

CR1000652 : Letters Module

Building a new module letters.
Aim of the module: writing a letter directly from the CRM.

The module will be allocated inside the activities from where the user can write the letter.
The following fields are needed: subject, reach text field, note, status.
Implementing two buttons save and send: Once send is triggered a modal opens where the user can choose Output Template from the dropdown.
A new action button 'Mark as send' will be added which generates the actual pdf. At the same time the letter will be visible inside the 'Activities'.

CR1000653 : Service Calendar Management

Added a new Workbench element to handle managing the service calendars.

CR1000654 : LDAP: map ldap settings to sysuirole

Allocate sysuiroles to user depending on its LDAP login group

CR1000657 : BonusCards - Improvements

Added an new module 'BonusCardExtensions' to audit the extensions separately.
Added a new field type 'bonus card validity date' to calculate the extension date with a custom API.
Added a 'validity_type' field on bonus program to enable selecting which method to use for the calculation.

CR1000658 : System Dropdown Trigger Directive - Added Trigger Button

Added the SystemDropdownTriggerButtonDirective. This can be used under the system-dropdown-trigger to handle the trigger click instead of the parent.

CR1000659 : System Input Date - Used System Dropdown Trigger

Used the system dropdown trigger directive to open the picker dropdown. This will display the picker on the top level in the dom.

CR1000660 : System Prompt - Added Input Date

Added an new system prompt type 'input:date' that renderes the system input date component and return the value on confirm.

CR1000661 : New module PartnerAgreements

Create partner agreements and visualize progress on negociations. Manage activities all around business talks and link to opportunities.

CR1000662 : Breaking Changes

Add Breaking changes field.

CR1000663 : Email - add multiple email addresses on drag and drop

Fixed that if an email that is dragged that all email addresses are added

CR1000664 : Link beans to emails

Added the logic if an email address is added that was linked to a bean, so the email is also added to that bean directly.

CR1000665 : Compiler - Added root_template

Added to Template Compiler an new template variable to enable access to the root template data by typing the following:
e.g. {root_template.name}
The above example will return the name of the root template in case we need to access its data from an embedded template.

CR1000666 : Security Settings Improvements

Manage password security settings, login channels, login attempts, block/unblock users.

CR1000667 : GDPR Retention Policy Manager

Added new feature with the GDPR Retention Policy Manager. Based on Filters, actions to set records invalid, mark them deleted or delete them permanently can be defined. In alignment with a company's GDPR Rules, thus, personal data can be proactively deleted if there is no interaction for some time. E.g. dead leads after a time span of 6 months.

CR1000669 : Auto Link Emails to objects

When email addresses are added in the email address search panel when sending an email, the beans identified with these email addresses will also be linked to the email sent. This ensures that the email trail when originating from another object still stays with the recipient's visible.

CR1000671 : Anonymous Questionnaire Participations (requested by KH Friesach)

Questionnaire Participations can now also be anonymous.

CR1000672 : Template Variable Helper, Phase 2

Phase 2: Compatibility with CampaignTasks and Parameter Fields for the Template Functions

CR1000673 : Special Characters in Passwords

In addition to letters and digits, special characters can now also be specified for the password.

CR1000675 : Memorize last set UI Role in preferences

Added the logic that the last selected user role is kept in the preferences and when the user logs on the last active role (if still available) is set as the user's active role.

CR1000676 : New user type: API User

New/additional user type: API user.

CR1000677 : Bean Mark Deleted - Check retrieve

Added retrieve before processing if needed to SugarBean::mark_deleted. This ensures having the necessary bean data before handling the delete hooks.

CR1000679 : Revision of the change/reset password forms

Improvement of the change/reset password form.

CR1000683 : Email Schedules Enhancements

Added an additional option to cancel an open EmailSchedule and also an enhanced detail view that list all related beans the email is being sent to.

release 2021.02.001

SpiceCRM 2021.02.001

After the Slim framework update performed in the Winter it was only logical to add the SpiceCRM REST API documentation. The objective is not only to make the REST API accessible for developers but also to add validation checks on variables passed and therefore ensure application security and stability. Beside backend changes and having in mind that a CRM is a communication tool, we added the SpiceCRM Page Builder to simplify the creation of newsletters and landing pages directly in the CRM. For the CRM users themselves we added a real time notifications, making it possible for users to subscribe on records and be informed right away about content changes. And finally we started a security offensive by implementing a Two-Factor Authentication (2FA) based on GoogleAuthenticator app.

The API Inspector

The API is directly documented in the CRM itself. The strict definition of the request parameters that can be sent to the CRM, matches the security requirements. Developers can try out the requests within the Inspector and check the results without needing any additional software.

APi Inspector

The SpiceCRM PageBuilder

The PageBuilder makes it possible to drag&drop content elements and generate full designed pages without any technical knowledge.

Release Details 2021.02.001

1000409 : Spice Page Builder

Spice Tool for building Html Landing Pages and Newsletter emails. Drag and drop elements into the page and configure the layout from the builder panel.

1000413 : Starface VOIP Integration

Integration Starface Telephony System.

1000415 : Generic telephony components

1000425 : Calendar Enhancements

Improve Calendar performance. Google Calendar Integration.

1000427 : Add Pipes to template compiler

Ability to change values using various functions before they are inserted.

1000469 : Calendar Show/Hide my own Events

Allow Users to show/hide their own calendar in the calendar monitor.

1000480 : Global Notifications

Display the user notifiactions in a dropdown.

1000509 : Backend: Get a collection of related beans

Modify get_linked_beans() to accept array of link names as first parameter

1000516 : Improved Code Quality on Backend

Moved $GLOBALS Class instances to singletons.

1000523 : Model List Service: Improvement. Disable Auto Loading

Move the get list data command from the model list service to the components that use the model list service.
Add a disableAutoLoad flag to the object list component for the list 'all'

1000526 : Mailbox Manager View Improvement

Added three different split options to the view. 'No split', 'Horizontal split' and 'Vertical Split'. With the possibility to configure a custom component set for the horizontal view.

1000527 : Object Related List Files Big Thumbnail

Added big thumbnail option to display the file tiles with big a thumbnail preview.
It can be toggled by the icon button on the panel header.

1000528 : System Richtext Editor Embedded Tools

Reserved the right corner of the toolbar for ng content to allow rendering custom tools embedded in the component.

1000529 : Field Richtext - Signature

Added a signature dropdown in the toolbar with the options (none, mailbox, my signature) and automatically write the signature in the content if exists.
Added email signature field for mailbox module to allow using the signaure of the mailbox.

1000530 : Mailboxes - Email Signature Field

Added a new field 'email_signature' to the mailbox to be used while sending emails.

1000531 : Bug Fix: Spice Importer: File Too Big Calculation

Corrected the fileTooBig value to calculate the count csv rows and not the file raws

1000532 : Emails - New Subject Field

Added a new field type email subject to display a status icon of the email and the subject beside. It also adds a line through the text when the email is closed and bold if the email is unread.

1000533 : Activity - New Field Activity Date

Added a new field type activity date to display a short formatted date based on the past, today, and the year.

1000534 : System Checkbox - added indeterminate option

Added indeterminate option to the system checkbox.

1000535 : Groupware Attachments - Toggle Select All

Added a select all checkbox for the attachment in groupware.
The attachment can be selected by default by a sugar config variable.

1000536 : Field Email Status - added status icon "send"

Added status icon send to the field type email status

1000538 : Questionnaire Field

Allows an entire questionnaire to be displayed as an input field.

1000539 : Richtext Editor: Improvements

- Added useMediaFile option to enable/disable using media file module
- improved the fullscreen logic
- added insert image from url tool

1000540 : Object Related List - Display Edit Modal

On save failure on object related list because of required fields are empty, edit modal will open to allow user to fill in the required fields.

1000541 : Assignable Vardefs - Assigned User ID Type Adjusted

Changed to assigned_user_id field type from 'relate' to 'varchar' length 36

1000542 : Address Field - Google Place fill with Current Language

When the Google Place API retrieves the address by the place id, the current language will be considered and the results will be returned with the current language.
This affects the AddressField Type when searching by google places.

1000544 : Email Schedules - Added Parent Fields

Added parent_id, parent_type to to the EmailSchedules module to allow displaying the Schedule in Activity Stream or in a related panel.
Displayed the EmailSchedules subpanel under TargetLists Campaign Tab.

1000545 : Field Email Addresses - Opt In Status, Improvment

Adjusted the usability for managing multiple email addresses. Added field opt_in_status to the email addresses relation table to display a status icon for an email address. Added singleMode option to allow using the field for only one email addresss.

1000546 : New dictionary type "shorttext"

Added a new dictionary type shorttext that also can hold a length. Used mainly for Oracle to hold fields with up to 4k and not create BLOBs since that siginifcant increases performance.

1000547 : Cleanup DB column removal

Updated the column removal tool to better usability. The tool allows to compare actual DB structure with the vardefs and remove columns in the Database that are no longer needed.

1000548 : Add Option to load more manually in Listviews

It is an option to allow the user to load more items manually rather than automatically loading when reaching the end of the list in an infinite list view

1000549 : Added an option for item numbers in the ObjectList

An option has been added to number the lines in a listview supporting the viewing and navigation in large datasets.

1000550 : Added count of selected item in List Header Details

Added Information on the number of selected items in the list view to the list header details. This makes it easier in case of selection scenarios to easily understand how many records are selected.

1000551 : DIsable Export Buttons if no record is selected

added the feature that the export buttons in the list header are disabled if there is no record selected. Increasins usability.

1000552 : Added Range select option to the list actions

Added a new option with the component ObjectListHeaderActionsSelectRangeButton allowing a user to select a number of records based on a range specified.

1000553 : Module Subscription Button

Added a subscription button in the header in details view to enable/disable subscribing on a specific record to get notifications if any field value was changed.

1000554 : New Field - Icon Condition

Added a new field icon condition which displays an icon based on the given module filter condition match. It can also be used to display a neutral icon without condition.

1000555 : New Field - Email Activity Openness

Adde a new field email activity openness to enable toggling the email openness status between 'open' and 'user_closed'.

1000556 : Added pagination buttons to the subpanel

Added a pagination button bar to the subpanels, so in additon to the view all there is now also a pagination bar.

1000557 : Properly set default currency

Changed logic in the currency field so the default currency is pulled properly from the user preferences. Also removed the default values in the generic copyrules for Opportunities and Salesdocs.

1000558 : Added length limit to text field

Added length indicator and limit to the text field if a length is set. This is also to accommodate ORACLE text fields (nvarchar) that have a length limitation of 4000 chrs before they become a blob.

1000559 : Proper Number formatting in list count and aggregates

Added number formatting for the items, totalcount and the aggregate item count in the list views

1000564 : FTS and Logger Transactional

Make FTS transactional and logging in separate DB connection

1000571 : Change Assitant to pull from Elastic

Changed the Assistant on the front page to retrieve the entries from the FTS engine with clear configurability using the module filters.

1000572 : Added Workflow Tasks to the Assistant

added Workflow Tasks to the Assistant on the home screen. This allows to also bring open Workflow Tasks to the assistant and thus to the user. Also added a separate view and field for the workflow task name that directly then links to the parent item.

1000573 : Meeting and Call reminders

Re-added the reminder field allowing the user to set a reminder on calls and meetings. This will prompt a popup with an alert in CRM and also a desktop notification when set and allowed the set duration before the event occurs.

1000574 : MS Exchange: improve response error handling

Some errors shall be returned to screen as exception before the logic falls into a php error.

1000575 : Disable Aggregate checkboxes when search is running

Minor change to disable the aggregate selection checkboxes when a search is running. This avoids conflicting and overlapping requests.

1000576 : Campaign Task - Send attachments with the email

Added attachment panel to Campaign Task to enable sending attachments with the campaign email

1000577 : Email Reply/Forward: Clone related entries from reference

Added field 'reference_id' to email.
Clone the reply/forward email related entries from the reference (original) email.

1000580 : Updated the Merge Feature

Amended the merge feature and dialog:
- Merge has been added to the list header actions. So entries can be selected from the list and merged from there
- In additon a check is made that the to be merged records can all be deleted
- Merge now also considers the attachments of a record
- The layout of the merge dialog has been amended. Also making it clearer from which record the merge has been triggered
- The merge als emits a message in the app internal broadcast channel and will trigger a reload of activities internally automatically showing the immediate results ater the merge in terms of related records.

1000581 : Handle delete event in navigation tabs

If a record is deleted (e.g. in a merge) and there is still a tab open with that record, the tab will be automatically closed (enforced) and also not prompting the user.

1000583 : Core Library Updates

Updated to
- Angular 12
- rxjs 6.6.7
- zone.js 12
- underscore.js 1.13.1

1000584 : FTS: config option for min and max ngram

Added the config options for min_ngram and max_ngram for the ngram analyzer and tokenizer.

$sugar_config['fts']['min_ngram'] = '2';
$sugar_config['fts']['max_ngram'] = '20';

enables customers to set min and max values

1000586 : Add connect now option to reconnect dialog

Added an option to reconnect manually right away in the reconnect await dialog. Also extended the default reconnect time to 10 seconds

1000587 : Checklists: Logic improved, Refactored.

FieldChecklist refactored to ObjectChecklist.
Focus/blur Logic improved.
Separated saving.
Temporary Backup fields added.

1000588 : Filter Panel - Multienum Type adjusted

Built an appropriate filter query for the fields from type multienum.

1000592 : Two-Factor Authentication (2FA)

Added 2Factor Authentication with TOTP Tools like google Authenticator

1000597 : API Log Enhancements

Consolidated the KREST log to the API log that now also captures the In and Outgoing Requests. This also captures incoming SOAP Requests. This also includes an update on the API Log viewer and the API Log config to have one central point to capture all events.

1000598 : CRM Log Viewer

Harmonize the CRM log viewer to be in line with the API Log viewer.

1000599 : Add embedded templates to template compiler

Added an option in the template syntax to add an embedded template in the syntax.

1000600 : Default navigation is now tabbed

Set the default navigation paradigm to tabbed view for the user preferences.

1000601 : Bug Fix: Audited text value was not saved properly

DBMananger was retireving the field type first from the type property which is not always the db type of the field.
Adjusted the DBManager class to retrieve the db type of the audited field to prevent saving the value in the wrong field in audit table.
Bug was discovered in workflow definition audit.

1000602 : New Component - System Checkbox Toggle

Added a new system component renders an input checkbox toggle and handle the value by angular two way binding.

1000603 : BeanFactory::getBean - Added "forceRetrieve" Option

Added 'forceRetrieve' Option on BeanFactory::getBean. This helps to ensure retrieving list items that are referenced to each other.

1000604 : Impersonation Login (ReIntroduction)

Only admin users may login as another user.

1000614 : Bug Fix: Reporter - Filter Reference Operator

Backend: In KReportQueryArray reference operator from type datetime fixed.
Frontend: ِFixed the reference dropdown values.

1000623 : HotFix Parameters description for route /configuration/spiceui/core/modelvalidations

CR1000634 : HotFix save validation rule für json string in action parameters

Save would not work when the parameter for an action is a json string

SpiceCRM 2021.01.001

“Spice is in the air” and we used the winter month to make further significant changes to the backend platform. After the removal of the legacy Frameworks this made room and space to prepare the full support for PHP8. PHP has grown to one of the major – if not THE – web programming languages on the planet over the last years. With Version 8 the php project also makes further significant steps in terms of stability, security but also performance. At SpiceCRM we strive to support the latest releases ensuring that in a fast changing world your systems are safe, secure and up to the latest standards.

The “all-new” Email Inbox

Email is all but dead. It still is one of the major forms of communications when it comes to sales, marketing and support. To make this even easier we made further changes to our inbox manager that makes the handling even more like you are used from regular web mail clients like GMail or Office 365.

Do we want to replace this clients – not necessarily, but it is all about UX, easy of use and giving users the choice.

Update on the REST Framework

A second big – but most likely for the regular user not noticable change – is the update of our REST/API Framework. Also there we did a major upgrade to SLIM4 as the base component. During the upcoming releases we will further harden and strengthen the API. Stay tuned for the upcoming releases that will deliver more and enhanced features here.

Bringing it together – the “All-in-One” package

When we started the development of SpiceCRM we on purpose separated the backend and the frontend. Both efforts meant separate technologies, separate technological standards and allowed us more flexibility in developing SpiceCRM and the new UI. With the bigger redesign of the SugarCRM based backend we are also bringing the two together in an all in one repository to make the installation process and deployment for our on premise customers and partners easier. You can find the all in one package in the original SpiceCRM repository on Github following this link https://github.com/spicecrm/spicecrm

Release Details 2021.01.001

1000500 : Cleanup entrypoint.php

Cleanup of entry point adding namespaces

1000517 : CTI Integration for five9

SpiceCRM inbound / outbound calls with five9

1000525 : Bug Fix: Set Primary Email Address in Edit Modal ist not working

Added a unique name in the field "email addresses" for the input radio button to prevent mixing up the radio button groups, if the field is rendered more than one time on the same view.

1000513 : Checklist funtionality for tasks

Create multiple checklists in a task.

1000522 : Add option for simple full name field

Added config option to full name field to display it "simple" without academic degrees before and after the name in edit view

1000524 : Field Google Places Search Street Name + Number

Added concat street name with number if the field number is hidden in the system.

1000520 : Bug fixed: Workflow Task Email was not sent

Bug fixed: Workflow Task Email was not sent.

1000515 : Authorization Refactoring & Ldap Improvements

Support for mandatory group membership with Ldap authentication
Link between authorization roles and Ldap groups

1000510 : Remove developerMode logic in VardefsManager

DeveloperMode shall no longer trigger a refresh of vardefs.

1000504 : Attachments: Feedback in case of deletion error

1000024 : UI re-login

when the session expires the user will be prompted to relogin using the same azuthentiyation method as the expired session had been. This will prevent users from loosing data that has not been saved in case the servr session expires. The same happens if the network conection is lost. the system will wait and try to reconnect and then continue where the session has been stopped.

1000502 : Oracle support

Oracle compatibility with SpiceCRM.

1000505 : Added new fts options for elastic

Added two new options for fts config to be set in the config table both on category fts:

- number_of_shards: defines the number of shards set when creating an index. Since our indexes typically are relaive small the default value is set to 2
- number_of_replicas: the default value for the number of replicas in a cluster: the default value is set to 1

1000514 : Slim 4 upgrade

REST library upgraded to Slim version 4

1000518 : Angular update to 11.1.0

Update to angular 11.1.0 & cdk 11.0.4

1000537 : Define cache folder for dompdf fonts

Fonts are currently cached unter vendor/dompdf/dompdf/lib/fonts during pdf process.
It is now possible to define your own cache folder under SpiceCRM existing cache Folder using config variable category = dompdf, name=fontDir. Default system value is dompdf/fonts/

1000511 : Improvements ProjectManagement tools

Additional fields for completion level in ProjectWBS module; Start and end date for plannedactivities; new module ProjectActivityTypes for billing purpose
refactoring of date fields in ProjectsWBSs: rename fields in projectswbss before running repair/rebuild after update or move you values from old fields to new fields after repair/rebuild

1000474 : Catch when login session dies

Return screen notification when session is dead so that user knows he/she should log in again

1000508 : MS Exchange integration: make participant policy related to module (Calls or Meetings)

Additional config variables: apply participant_policy on defined modules

1000512 : SLDS Update to 2.14.1

Updated lightning design to Version 2.14.1 (Spring 2021)

1000501 : Config Transfer: Ability to import despite unknown tables

1000507 : DB Column Cleanup

New feature to delete the old db-columns from the database for a module
- workbench -> Repair Database -> Database column cleaner
- opens a modal witlh all vardefs on the left side and all db-columns on the right side
- mark every field where one of both sides is missing
- a db-column with a missing vardef can be delete in the db

SpiceCRM 2020.01.002

Beginning of the year we did post our Roadmap and release plan. In accordance with this we just did release the spring Release (2020.01.001) of SpiceCRM delivering the majority of the planned features. However some of the features we felt had not been fully tested so we held them back and now releasing SpiceCRM 2020.01.002

Amongst a set of technical enhancements this release brings to major enhancements to SpiceCRM.

Tabbed Navigation

When we started the development of SpiceCRM we always had the single page concept in mind. This is state of the art in the current web application technology. However for business applications the disadvantage is at hand with the lack to manage multiple records at the same time. In some areas and a lot of usecases in CRM this might not be a problem but for the more versed user we very often heard the request to open multiple tabs, yet stay organized.

With this release we are introducing the capability fort the user to manage navigation paradigms and switch between three modes of navigation.
  • Simple: the classical one-page app view. Fast easy and focused on the current record
  • Tabbed: opening new record in a new tab. For those that handle multiple records are the same time
  • Tabbed with sub-tabs: enabling to open records in tabs and further related records in sub-tabs of the tab. Sounds complicated? Give it a try and you might even love it

This allows users to open multiple records at a time, organized in logical tabs and navigate easily from one to another record, also editing multiple records at a time.

Google Maps Integration

One still missing part with the port of our Reporter to the SpiceCRM UI was the Google Maps Integration in the Reporting tool as a data visualization plugin. Adding that we also added a set of new featuires to bring Maps and Geodata deeper into the application itself further completing the features with the google Integration we already had.

  • Integrated Google Search, autocomplete and geocode when creating records
  • Integrated Address Search and Completion
  • Geo based search of Records and easy visualization on a map
  • One click navigation info supporting easy routing helping you to plan visits
  • Proximity search enabling you to find other accounts next to the customer you are just viewing.

This certainly further support the usability from SpiceCRM and increases productivity and efficiency using SpiceCRM.

Technology Updates

Furthermore we updated some parts of the technology stack we are using to stay on top of the latest innovations and security considerations

  • updated to Angular 9.1.2
  • updated to Support Elastic Search 7.*
  • updated to support Highcharts 8
  • updated to Lightning Design 2.11.7

The Release in Details

1000028: Tabbed Features in line with Salesforce
Add functionality that opens on a click in new tab within the one-page app rather than always going back and forth. Similar to the implementation done by salesforce.

1000397: Angular 9.1.1 update

Update to angular 9.1.1

1000394: Added footer height

Added a footer height to the internal services allowing fixed footers to be displayed on the screen.

1000227: Update FTS Field handling

Change to FTS Manager Dialog

1000395: Responsive action menus

Changed buttons in small screen view for responsive design to render as button icon group.

1000405: Formatting of HTML code in Rich Text Editor

Added a new formatting option to the HTML source code in the rich text editor that allows proper formatting and indenting of the HTML code in the dual view making the HTML code more readable and easier to manage.

1000386: Elastic 7.* support

Support for Elastic 7.*

1000100: Service Enhancements

Added service functions

1000398: Lightning Design 2.11.7 update

Update to lightning design 2.11.7

1000385: FTS enable to aggregate on empty values

Enable to add aggregates on empty values. With the option also an aggregate for documents that have no value is built counting the number with empty values. The aggregate can also be set to filter the list.

1000388: Relate Field Filter

Added a new option to the related field and the ObjectActionSelectButton so relate filter can be applied. This allows to e.g. filter contacts in one relate field based on the value of e.g. accounts in another relate field. The relationship between the two fields can be set as optional or mandatory.

1000384: Collapsible FTS Aggregate Panels

Aggregates in the FTS can also be set as collapsed. If done so the aggregate will be rendered collapsed. The user can expand and set on demand. This optimized the screen layout if there are multiple aggregates and reduces the number of aggregates rendered on the screen.

1000339: Added new participants panel in calls & meetings

Added new panel for participants in calls and meetings including the participation status. Invited users can also set their attendance status.

1000383: System-label components

Added three components for , and to be used in templates and to optimize the change detection in Angular.

1000406: New view for Media Files

Added a new view for Media Files allowing a proper preview with thumbnails as part of the list view and also in the media file picker.

1000404: Output Templates Preview

Added a new component top the output templates enabling the user to easier change and manage the template and also to get a preview of the template for a bean the user can select and then render dynamically without saving the template.

1000304: Load full data on recent items

Added loading of full data for recent items so the custom field sets can be displayed in the recently view list.

1000377: Files Panel Header with Count
1000379: Refactor system-label component

Refactor the use of {{language.getLabel…}} in a template to use component… should reduce change detection cycles and improve performance.

1000330: Update Admin Screen

Update layout for admin screen.

1000314: Remove Renderer for Angular9 compatibility

Remove Renderer for Angular9 compatibility

1000403: Angular 9.1.2 update

Update to angular 9.1.2 also including angular cdk 9.2.1

1000378: Google Maps for List and Record View

New Generic Google Maps Component has been built.
Google maps view for list view to display the search results as pin markers on google maps with the possiblity to search the same was as in spice list view.
We have also added a record view tab to make it possible to search around the record with google map circle tool and get the direction infos from a cetrain address to the record location.

1000396: Full screen modals in small form factors

Changed modals to adopt full screen view in modals and small form factors according to responsive design

1000387: Highcharts 8 upgrade

Updates the embedded highcharts libraries to highcharts 8.0.4

SpiceCRM 2020.01.001

Beginning of the year we did post our Roadmap and release plan. In accordance with this we just did finalize and release the spring Release (2020.01.001) of SpiceCRM delivering the majority of the planned features.

List View

With the new Release we made major changes to the various forms of the List View. The standard list now allows free resizing, more flexible handling of Filters, Multiple Column sorting, Geo Search and much more. Also the Kanban Board did get a major rework allowing easy drag and drop, hidden Buckets (for e.g. closed Opportunities as in the Screenshot below). New Types of Vies (e.g. Maps based) did not yet make it into this release but will follow soon in a release targeted for end of April.

Reporting Engine

Another big effort has been completed in its first phase which is the port of our well known reporting engine from the backend UI on to the new Frontend. This now allows easy creation of reports in an intuitive UI for the end user with all the capabilities we built over the last years into our reporting Engine. It also marks a further milestone in the port of the complete legacy sugar based backend to our new UI.

We already did publish a short YouTube Video on the fast and easy way to generate reports and analyses all the data that resides in your CRM system. The video can be found on YouTube following this link.

There is of course a lot of further things that happened. We added new Features supporting agile project management following the SCRUM Methodology, took further steps to complete the quote to order to invoice process, further enhanced the service processes and much more.

Find the complete Release Notes below.

The Release in Details

1000328: Reports Designer
New user friendly platform to design Reports, it is easy and simple to use with drag and drop to select and filter on the desired reporting fields. It is also possible to add and manage data from multiple sources with the union modules feature. As soon as the reporting fields and filters are defined, you could also move to the presentation tab to choose and configure the presentation view for the report. The same for the visualization view. The Integration tab would be your last place to activate, deactivate and configure the possible Plug-ins like exporting report data and so on.

1000354: FTS sort aggregate bucket values by _key

Currently aggregate bucket values are sorted by _count desc. Now it is possible to define sorting by _key in FTS settings.

1000382: Sort Hook for get_linked_beans

sort_array parameter for retrieving linked beans is limited to fields present in corresponding database table.
Sometimes list shall be sorted by a non-db field. This is now possible with new method Link2::processSortHook() .
sort_array parameter now accepts additional key ‘sorthook’ containing an array with sortfield and optionally sortdirection.

1000375: Bug Fix: Duplicate Output Template

Output Templates module has the field “module_name” in its vardefs definition, which defines the module where the Output Template can be used.
This field is an already existing variable in sugar bean which is used to tell which bean should be cloned, but when the field “module_name” is set in OutputTemplate, it overrides the variable in sugar bean, which leads to a cloning failure.


In sugar bean, The variable “module_dir” is used instead of “module_name”.

this fix should not have any side effects, as long as all extended beans has the variable “module_dir” set.

1000366: SalesDocs refactoring

Removing unnecessary field definitions, adding n-2-n relations.

1000365: Move ProjectActivityDashlet Component to modellist.service standard

Upgrade of component ProjectActivityDashlet

1000359: New front-end module for SpiceAttachments

Added a new module for the SpiceAttachments in the front-end.

1000333: Improved release process

Create a release workflow for deployment.
Additional variables in back-end for ChangeRequests and Release modules are needed. Additional UI configs to be retrieved with “deployment” package.

1000358: New field to manage files from a bean

New field for uploaded files
– should look like “parent” field
– it should be possible to upload and remove files from a bean

1000343: FTS enrich bean data for indexing

Use custom method set in indexproperties to enrich values in index for a non-db field

1000268: Actionsetmanager

An interface is to be developed that enables the management of actionsets.
– It should be possible to create new actionsets
– Existing actionsets should be able to be copied
– The configuration of the items should be dynamically visible and editable
– The view should be based on the familiar Fieldset Manager

1000351: SCRUM/Agile components

Enables the users to organize their projects according to the agile project management paradigm by defining Themes, Epics and User Stories in the CRM system.

1000353: Fix Trashcan recovery

Associated relations were not recovered even if recover parameter was set.

1000350: Update on status network buttons

Added option for silent edit mode on model, this is also set from the status network button to avoid the “flickering” of the save buttons.

1000362: ServiceOrders: handle duration for Calendar

Handling duration is missing in ServiceOrder class.

1000355: Added auto resize to textfields

Added auto resize feature to text fields. The text box will auto adjust its size to the max size or default 300px when text is entered.

1000367: Package salesdocuments

Improve package definition for salesdocuemnts; introduced B2C; additional templates.

1000371: Fix Condition value for enums in OutputTemplate

Parse real value of enum when used in a condition and not the translated value.

1000352: Cloning of beans together with related beans

If a bean is cloned, the related beans can also be cloned automatically. This saves a lot of manual work. Or it makes cloning possible at all.

1000331: SpiceBeanGuide for release process

Create a guide for release process. Retrieve configuration changes using package loader (package “deployment”).

1000336: Releases: create parent relation

Make releases linkable to Accounts and Projects.

1000361: E-mail Reply Modal

Button which opens modal with e-mail reply logic.

1000360: OutputTemplates: integration of module filters

Enable the use of module filters in Output Templates and use additional parameters like limit or sort_array.

1000316: New Module QuestionnaireParticipations

The new module QuestionnaireParticipations allows better access to participations than QuestionSetParticipation does.

1000305: Redesign Activities Stream

Update Activity Stream items. Moving components from object components to activities and cleanup of deprecated components.

1000348: Angular Update
1000357: KREST add related bean with additional values

When participants are set in an activity directly in editview , relationship fields like accept_status is overwritten after saving the activity. If a value was set before editing, it is lost after save. Enriching values for relationship fields during link handling will prevent data loss.

1000338: Blacklist for packages to protect configuration

Disable loading of packages by setting package name in new array variable $sugar_config[‘packageloader’][‘blacklist’] n”}: uppercase;}.bean_report .logo {text-align: right;}.bean_report .logo img {height: 100px;}.bean_report .top_part td {vertical-align: bottom;}.bean_report .top_part {border-spacing: 0px;}.bean_report .report_title {font-size: x-large;}.bean_report .bean_name {font-weight: bold;}

SpiceCRM 2019.12.001

Amongst a set of smaller changes and additions we significantly enhanced the User Experience when dragging and dropping files and emails to SpiceCRM. Whenever a file is dragged over the UI the user will get visual feedback where the file can be dropped. Also the drop feature has been added to the activity stream.

Activity Stream

When dropping into the activity stream the system will also automatically recognize if an email has been dropped directly from Outlook. In this case the email will be converted to an email in terms of CRM and rendered as part of the stream with a full preview of the message. In all other cases the file will be added as regular note in the activity stream with the file attached.

The procedure allows easy archiving of emails without the need for any plugin or additional software on the exchange server or within Outlook.

Sales Planning Functions

Furthermore we also converted the Sales Planning functions from the old UI to SpiceCRM and the new UI. With the sales planning tool users are enabled to put a proper sales plan in place and plan hierarchically on a territory, product group, product level. This empowers sales management to plan on a yearly, quarterly or monthly basis. The plan can be rolled over regularly, it can be monitored and used for target setting.

For specific industries like CPG or others the tool can also be used to plan specific promotions. In manufacturing it can be utilized to link sales and logistics.

The Planning Tool can be freely customized to plan on different hierarchies, plan various key figures. It can be configured to read historical data like last years revenues or customers potentials and other info. I can evaluate formulas to calculate values and also can aggregate on all levels.

The integration and flexibility makes it the perfect sales and operational planning tool for larger organizations. Supporting them to enable the sales team to plan properly.

The Release in Details


A new config option (dual) has been added to the system date picker. when it’s set to true, the date picker will display two months underneath each other.


New table component like “object related list” to list all filtered entries of one module.


Optimistic locking check is based on audit table of module. Make sure that audit table exists before doing the check.


sales stages in dom need to have the same values as SpiceBeanGuides stages
BeanGuide STages have to be loaded in primary modules load: correction in config reference done.


After Changes from 27/10/2019 the ObjectEditModal has changed the emitted value from model.data to action string.
This was passed as return value for the addModel, where the expected value was model.data.
The fix:
in mode.service:
Line: 948 moved to line 951 and the retSubject.next value change “this.data” instead of “response”
And this will be only passed if the action is either “save” or “savegodetail”


Object Texts Components moved into a separated module Spice Texts and renamed by the module prefix. This requires a reload of the system configurations from the Reference Database.


E-Mails imported by Classic Sugar API won’t set any text in body property. Add fill in body content in Email::retrieve().


Fixed the date filter field in the Reporter for the dynamic filter fields to render properly when set in the filters and then set to editable.


Improvements in the upload of media files including an editor.


In “Object Related Duplicate Tile” a “Go to button” has been added which only appears in the edit modal


Added config option on parent field to hide module icon since in some cases this is not fitting the view.


Being able to define an action “create call” (or create meeting, or create task…) in actionset applied in each subpanel entry.
Modal Window with Activity detailView pops up after click.
Defined CopyRules preset field values in Activity form


This Directive will highlight the component which is used on and emits the dropped files on drop.


The SQL SELECT queries unifying tables (using “UNION”) often contain ‘*’ (asterisk) to query all columns. However, sometimes the columns in tables are sorted differently and thus the result of the unification may differ from the expected result. This was discovered namely when using the tables “sysmodules” and “syscustommodules”. Therefore in this case, the names of all the columns in the query should be enumerated (dynamically) instead of using the ‘*’ operator.


Added a modal popup allowing the user to select the fioelds toi be exported in the LIST Export. This can also be configured setting the properties for Component ObjectListHeaderActionsExportCSVSelectFields. Options are to define a separate fieldset that holds fields that can also be exported or to allow also exporting of all fields. This cna be of course be set role and module specific or application wide.


Handle dropped files in activity container and add an email if the file type is MSG


Displays delete icon on global notes for admin or note by creator.


Moves the dropdown element to the footer and re position it. This fixes the issue when the dropdown is within a container which has a hidden overflow, the dropdown will be truncated.


Fixed issues with the tree view for the reporter to proper render trees with enums and all kind of other values


Questionnaire Evaluation Field


System Prompt will interpret the “n” or “r” of the content text as a line break.


We have improved the Drag and Drop functionality. The System Tree Component is now integrated with the modern angular cdk drag and drop with extra handling for the assignment of the tree items parent.
We have done some other improvements for the template.

Now it’s possible to decide either to assign the item as a sub item of another one or just to change the sequence of the tree item.

The component will also take care for changing the parent of the tree item if it’s been dropped into another parent scope.


It allows defining event colors for specific modules and also it’s possible to define a filter for the module to set the event color depending on the matched condition.


Bug fixed: Passing the children configs when they are set in the defined componentset was not possible.


Move configuration way from including files to loading namespace


Sort direction added in the “Field Enum” config to enable sorting.


Object Import Components moved into a separated module Spice Imports and renamed by the module prefix. This requires a reload of the system configurations from the Reference Database.


Added a text rendered to the reporter so multiple text fields are properly displayed


changed SpiceNotes to make them also editable, moved them to a separate module in the code and also added a panel header component that allows to give an indicator if notes are available for the object.

SpiceCRM 2019.09.001

Reporting Module

Highlights of the Fall Release are updates on the Reporting Module. We ported the views for the Pivot Table, the grouped and grouped with summary view and also the TreeView to the SpiceUI. This is an ongoing effort where we are bringing the best in class reporting functionality to the lightning experience with SpiceCRM. As we believe that integrated analytics is a key necessity this is an important step on our roadmap.

We continued to develop additional functionality for Marketing adding a basic event management. This allows planning and tracking of events. Add partners that play specific roles in the event. Track invitations and registration. Add a self service registration to your website.

Close&New Button

Also the good old “close&new” button in activities made it back to the new UI. For some time we did think there would be a life without it. We accept we have been wrong. So back it is. Allowing an easy way to close one activity and add a new one. But it would not be SpiceCRM if we did not make it better. So we added flexibility to customize it and to also let the user choose which activity to add next. Allowing an easy closing of for example a call and scheduling a meeting.

Besides that, there are further features worth mentioning like an easy way to change the users time zone, enhancements in the Calendar and also with the FTS engine. We also added a bulk indexer that will allow fast indexing with the elastic search. And many more…

The Release in Details

Ability for admins to view/change foreign user preferences

Ability for admins to view/change foreign user preferences

Actionset menus refactored

Object list header action menu and object action menu should extend the object action container

Adapting Date Time Fields

Date time fields constantly adapt to the current time zone setting of the user.

Add Componentset to spicebeanguidestages

Added a componentset as configuration option to the spicebeanguides. This allows to render a componentset instead of the description in the beanguide with the path. e.g. fields relevant for the sales stage can be rendered there or other components that might deliver valuable information

Add sort parameters to the dashlet generic component

Add sort parameters to the dashlet generic component

Added adminonly flag to tabcontainer item components

Added a config option “adminonly” to the tab container items (regular and vertical). If you set the tab it will only be rendered if the user is an admin user. Mainly used for the user tabs to only show some tabs to the admin but not to the regular user.

Added new Reporter Views

Added Reporter Views for Summary, Grouped, Tree and Pivot View

All Character Analyzers in FTS

Added two new analyzers spice_standard_all and spice_ngram_all that can be set and will include all characters (including, whitespace, punctuation and symbols) in the tokens and the search. This makes sense for e.g. name fields where a company name or a release name or version name includes those characters and they should not be stripped when tokenizing and searching using elastic search.

Ask for important user preferences at startup

Ask for important user preferences at startup

Auto correct the sort query for the many to many relation table

When we pass a none-db sort field for a module which is a mapped field in the many to many table, the sort query will be auto adjusted.

Avoid duplicate user names

Avoid duplicate user names

Backend only for admins

Backend only for admins

Better determination of user roles (for app launcher dialog)

Better determination of user roles (for app launcher dialog)

Better role assignment

With an icon custom roles now are recognizable as custom roles. The same name for a global and for a custom role is no longer a problem. Furthermore: Alphabetically ordered list.

Bug fix : retrieve with sort failed in one to many bean relationship

Bug fix : retrieve with sort failed in one to many bean relationship

Button “Save HTML content” in “Rich Text Editor ” Toolbar

Save button in the Toolbar of “Rich Text Editor” Component, which pass the content to “Field Rich Text” component to handle the save process.

Close activity button
  • Button for activities (only unclosed and editable)
  • Opens modal with componentset (enter closing data)
  • Create new bean with copyrules (new add-modal for selected module)
CloseModal and ActionMenu merge

Implementing the closemodal with the new actionsetmenu

Colorenum color in read-mode

No color in read-mode by the fieldcolorenum field

CloseModal and ActionMenu merge

CloseModal and ActionMenu merge

default-sort ObjectList

ObjectList with default sort info (moduleconf)


Define a set of Dashboards to be displayed in sub tabs in home.

Event Management

This Module will be responsible for the Event Management. An event will be defined with some basic info like it’s url or it’s capacities and so on. It will also have a relation to some other modules like accounts and contacts as participants or organizers and so on. It will also be possible to have some assigned activities.

Field Grouped Enum

A Field which displays checkboxes grouped under specific categories

Field Multiple Enum Dropdown

The field multienumdropdown renders an enum field as a dropdown multiple select list using the SystemMultipleSelect component.

French language package

French language package

FTS Manager: add button index bulk

Trigger bulk indexing manually

Improved Scheduler Job Log

Improved Scheduler Job Log

Incorrect checkbox value interpretation

The checkbox values in the Administration Configurator components were being interpreted incorrectly. The values stored in the DB as both 0 and 1 were interpreted as true (checkbox checked). The only value interpreted as false was NULL. The correct interpretation was already implemented before. However, the value was converted only for “boolean” types whereas the field type used was “bool”. This was corrected in the bug fix

KnowledgeBase – Button Release All

“Button Release All” set the status to “Release” to the selected document and all its sub documents

KReporter: update where operators

Enable where operator for int when vardef type is bigint

Lightning Design update to 2.10.0

Lightning Design update to 2.10.0

Load date time user preferences on user login

Load default values when preference is not set

Output Templates II

The document (result of a output template) is now savable in the CRM system.

Reload button for the sub panel header

Sub panel: When no item is shown/available the footer – including the reload button – is hidden. Now also the header has an include button.

SalesDocs additional fields: incoterms, payer, invoice recipient

SalesDocs additional fields: incoterms, payer, invoice recipient

Scheduler field: Last SUCCESSFUL run

Scheduler field: Last SUCCESSFUL run

Scheduler: Test function (dummy)

Scheduler: Test function (dummy)

Select Custom Actionset in config option

It should be possible to select custom actionsets in the workbenchconfigoptionactionset!

System Multiple Enum Dropdown

A Field which renders a list of items grouped under specific categories in a dropdown with multiple selection functionality.

System Statistics

Added a component in the admin section to gather storage statistics on the database, elastic and the file system for uploads for the system.

Time Zone Field for the Global User Panel

Time Zone Field for the Global User Panel

Update Global Module Menus

Changed the handling of the module Menus of the global navigation items so menu now considered an action set and allows adding custom actions

Url rewrite for IIS: web.config files for config and proxy

Url rewrite for IIS: web.config files for config and proxy

UTC Offset added to UI Date Field Values

UTC Offset has been added to the UI Date Field Values to display the right date for the current UI Time Zone

Week Number for the System Date Picker

Added a Week Number in the System Date Picker

Where Clause on relationship_role_column not implemented

Fixed M2MRelationship::getRoleFilterForJoin() and make use of it

SpiceCRM 2019.07.001

Opportunity Management

Highlights of the July Release are updates on the Opportunity Management. With the new Option for Revenue Lines the revenue of an opportunity can easily be split into chunks for the revenue recognition. This supports better planning and forecasting. Typically deals that are closed are not invoiced immediately but are also built on a billing plan. That can either be a split or with recurring revenues a ramp up to the total amount. Revenue lines allow you to easily maintain that and add the lines to an opportunity building a more realistic picture of the opportunity in the system.

We also started to rework the template compiler used for the PDF and EMAIL Templates. First changes are rolling in and more changes on the templates are to come with the next releases. We will add more info when those changes are completed.
Furthermore, we added an optional support to the integration of Dun&Bradstreet in the Accounts module, added further functions to the Service Functionality with the Service Locations and added features with an NPS question type for the service feedbacks.
Technologically, we completed the changes to support PHP 7.3 and also upgraded internally to Angular 8.0.1.

The Release in Details

Actionsetitem singlebutton

Add flag to show the button outside the drop down box

Angular 8.0.1 update

Update to Angular 8.0.1, also update to Angular CDK 8.0.

Bonus Programs

Bonus Modules (BonusCards, BonusPrograms) Management

Changes to lead conversion

Improvements of lead conversion done by eVolpe

DUNS module

New module to interact with dnb API and retrieve DUNS data

FTS Bulk Indexer

Added a bulk indexer and a separate job to the bulk indexer. The bulk indexer is thought as a tool to load initially into the FTS. It does not check changed related records in FTS. And it uses the bulk interface of Elasticsearch. It still uses the full data mapping for FTS and thus, indexes beans properly. However, due to the bulk nature it does this significantly faster.

Missing language code in translation when no default language is set

Labels manager sets value of default language for first translation. Catch when empty and set first language found in languages list.

New Module ServiceLocations

Define locations and assign location to a piece of equipment.

ObjectRepositories deprecated flag

Add a deprecated flag to the “ObjectRepositories” Score out the deprecated objects Popup when somebody tries to add a deprecated object

Opportunity Revenue Lines

Adding an option to add revenue lines to Opportunities with different amounts and dates for the revenue recognition

OutputTemplate Compiler: render date time fields to user preference setting

OutputTemplate Compiler: render date time fields to user preference setting

PHP 7.3 support

PHP 7.3 support

Polish Language Files for Backend

Polish Language Files for Backend

Questionnaires: New question type “NPS”

New question type “Net Promoter Score” (NPS).

Reload configuration button

The button is located in the header and reloads the configuration, only displayed for admins.

ServiceFeedbacks: Results Tab for Questionnaire Participations

ServiceFeedbacks: Results Tab for Questionnaire Participations

SpiceBeanGuides to packages

Spice Bean Guides Definitions are now available in corresponding package (opportunity management, lead management…)

Update template compiler

New template tags were added to handle loop through list of records and to display the values conditionally. Also function call integration to retrieve data.

Login impossible with a user name containing utf8

Login impossible with a user name containing utf8

SpiceCRM 2019.05.001

Duplicate check

Highlights of the May Release are updates on the duplicate check that now happens online when creating records. This enables user to easily see while entering data and as they enter data to instantly get a response from the system if a duplicate record is found.

Further changes are smaller changes to enhance the User Experience and also some technological enhancements to further improve performance, stability and maintainability of the UI.

The Release in Details

Backend installation with provided database user not possible

Form gets stuck telling that password does not match re-entered password.

Date_entered id was deleted from fts indexer

When you create a bean over a relationship -date_entered id was deleted from fts indexer.

Memorize search terms and Results in ListView

Keep the searchterm. Selected aggregates and results in the listview when navigating away from a list and back

Progress Bar

A new system component displaying a universal progress bar

Get progress report from POST requests (uploads)

POST requests now can report their progress status, for displaying progress Bars

KReporter: vulnerability fixes

Add a check on values for start, limit and filter parameters and clean mislead values.

FTS ListView does not render for contacts

Fix: set sort flag for last_name since full_name sorts on last_name and is the first field in listview

Block navigating away if a model is editing

Added a check if any model on a page is currently in edit mode and if so prompt the user to check if the changes should be discarded

Placeholder for login form

The username and password fields of the login Form are better titled now.

HelpText icon component

A new component, which shows an icon next to the label. On hover a text is shown.


Added a version parameter for loaded jsfiles and included it in the build process. This should eliminate the need to refresh the browser cache after version updates.

Product Group Manager

The Product Group Manager is a new platform to manage the product groups in a hierarchical list. Which makes it easier to manage groups and their related attributes and products.

Outlook AddIn

An Add-In loaded directly in Outlook that can save the Emails in SpiceCRM and add related Beans to those Emails

On the fly Duplicate Check

Capture and show duplicates when adding a new record.

Update Field labels in Views

Label rendering is now included in field rendering

SpiceCRM 2019.04.001


Highlights of the April Release are updates on tagging. We made it significant easier to simply tag records. In the same style as in regular Web Applications just add Tags. As you type SpiceCRM will suggest existing tags. Choose them and reuse existing tags or simply create new ones.

Tags are also included in the Full Text search and can easily be selected as aggregates. With the next releases we will also add them to the target lists so you can build flexible lists simply be assigning tags to targetlists and all records tagged with that term will automatically be used when the targetlist is used.

Also exporting as been made much easier, so you can just select the records based on the tags and then simply export them to a CSV or a target list directly from the list view.
Asides that there have been quite some changes on the backend. A lot in preparation for the upcoming updated on ACL as well as the work in progress on our vardef/metadata manager.

The Release in Details

Backend: Merge Record configure records limit

Configure maximal count of selected records to be merged at the same time. Set config variable in config.php or config_override.php: Example: $sugar_config[‘default_max_mergeable_records’] = 2;

Backend: Schedulers – make use of Vardefmanager for Schedulers module

Code clean up: use vardefmanager to create Scheduler vardefs so that date_indexed field (for FTS capability) is created during SpiceCRM installation.

Backend: SpiceTheme: – support custom images for module icons

Added capability to retrieve images from custom path for module icons in side bar display

Backend: Subpanels – enable search within Subpanel and set max count of records to be displayed
  • New class include/SubPanel/SubPanelSearch.php under namespace SpiceCRMincludesSubPanel; Parameter ‚”tr_config” in former developments refactored to “search_config” $sugar_config variable containing dropdown values for max count of records: $sugar_config[twentyreasons][tr_subpanellimits] renamed to $sugar_config[subpanelsearch][limit_dd_values]
  • Example: $sugar_config[‘subpanelsearch’][‘limit_dd_values’] = array(‘5’ => ‘5’, ’10’ => ’10’, ’50’ => ’50’);
Backend: Subpanels – property value dependency for subpanel display

Make subpanel display dependent of a property set in focus bean. Set name of property in attribute “trdisplay_for” (array) in Layoutdefs setup of Subpanel. Subpanel wil be displayed if focus->$propery is true.

Backend: Fix Load Hooks from Database

Do not load Hooks from database when no global database instance is available. Also fixed hook_array structure for hooks retrieved from database.

Bug fix : Field Email validation

Field Email Validation on save action was always returning an error message “input required” even though the field was filled.

Catch and handle bean action state for UI

Store which action is being applied to bean: create, update

Field Relate List

For a predefined module Relation this field can retrieve a list of a related module and it’s possible to set a limit for the listed items.

Field Text ID

This field translates a ” text id” into a human readable value.

FTS: fix DB Query error during install process

Fix DB Query error during install process

File Download in Firefox

In some cases the download of generated files (CSV, PDF) or attachments did not work properly. This has been fixed and now it should also work as expected in Firefox. Tested successfully with Firefox 65.0.2 and 66.0.2.

Fix KReporter search and sort in bucket manager

Fix KReporter search and sort in bucket manager

KReporter capability with SpiceACL

New Access Management module SpiceACL shall be considered in KReporter-Queries.

Language Translation Manager

This component provides a platform to easily handle the untranslated labels for the default language.

Login name for UserAccessLogs

Added the field “login_name” to UserAccessLogs to store the login names of failed login attempts

Memorize search terms and Results in ListView

Keep the searchterm. selected aggregates and results in the listview when navigating away from a list and back.

Missing confirmation queries

Added confirmation queries for the deletion of attachments or the deletion of items in related lists.

Object Texts

This component handles the related texts of a module.

PDF Preview in print Output

PDF preview has been added to the output templates. So in the window where the user can choose an output template the user can also choose to display the rendered output as PDF or as HTML. PDF is preset. This renders the PDF in the PDF Reader embedded and shows right away the generated result. The PDF can then also be downloaded but is seen as it will be rendered on the screen.

Related Panel animations

Added animations to the related panels so when they collapse and expand are smoothly faded in and out with height and opacity

Sequenced ObjectRelatedListList (Drag & Drop)

Added the ability to order the items of a related list by drag & drop. Until now this was possible in subpanels, now it is also possible for the full list (“list all”).

Show link name as title of related lists

Added the ability to entitle subpanels or full related lists with specific title of the relation (instead of the title of the module).

Spicecrm_fe_factory: improve gulp jobs for deployment
  • Add delete dist folder in js:build job
  • Add check on file.ts exists when uglifying the .js counterpart. Throw error when not found
  • Set current year over a variable in comments instead of hard coded

This component use “two way binding” to handel a number value and reformats it to fit the system formatting and it also accepts the following parameters (precision, min, max).

Added animation to collapsible panel

Added animation to the collapsible card in the systems so it animates smoothly when collapsed or expanded

Added configuration option to global search result

Added an option to set fieldsets for the global search results (GlobalHeaderSearchResultsItem) so the fields displayed in the search box can be flexible defined.

Added elastic normalizers
  • Added the support to define own normalizers.
  • The standard ones are defined include/SpiceFTSManager/normalizers/spice_normalizers.php and can be overwritten in the custom directory, adding your own ones.
  • Default is a lowercase normalizer that is applied to raw fields for sorting- so sorting is not case sensitive
Added language filter support to FTS Indexer
  • In the fts connection settings a new option has been added- to add a language specific filter by default to the spicecrm standard analyzers and normalizers.
  • To better understand the language analyzers and their impact, check out https://www.elastic.co/guide/en/elasticsearch/reference/6.7/analysis-lang- analyzer.html.
  • A setting can e.,g. be german_normalization that then analyzes and normalizes specific to German language. If none is set, no specific language filter is applied
Added query types for duplicate check
  • Added the option for different query Types in the duplicate check
  • Match (or): matches any of the terms in the field. Also supports fuzziness
  • Match (and): matches all terms in the field. Also supports fuzziness
  • Term: requires an exact match, no fuzziness supported
Added sort field in FTS

In the metadata the sor_on property can be defined for a field. Added the support that this is also enabled and considered in the FTS search. This allows e.g. that in a list of contacts the full_name field can be displayed but the the list is sorted by the last_name of the contact.

update Loader Logic

Changes to the loader logic and cleanup of REST services

update Tags

Update on Tagging and Tag handling

CRM Log Viewer: Negative filtering

Added the ability to filter out log entries with specific text fragments.

Select field for modal input prompt

Select field for modal input prompt.

SpiceCRM 2019.02.001

Highlights of the January Release are updates on the search features, a new filter builder adding flexibility and reworks in many areas to start supporting full responsive design and the build of our mobile App.

Google Places Search

Who does not know the process when adding data of switching to google, looking up a companies details and then via copy & paste add the data to CRM. Rest assured that time is over now. With the latest changes we are tightly integrating the Google places search into SpiceCRM directly. Identify a field as a Google Places search field. As You type SpiceCRM will do a google search, present you the results and when selecting the record populate data found on google like the phone number, website or address to the record. This makes entering new data just much easier.

You can also watch a short YouTube video on this feature here.

File Attachments

Further updates are on the generic file attachments. As you are most likely aware SpiceCRM offers the functionality to simply attach files to a record. We further enhanced that switching internally to a truly HTML5 way of handling uploads. This also allows no the parallel upload of multiple files. Just select multiple files in the upload dialog or simply drag more than one file to the files panel. They will upload in parallel. Furthermore, we added a file preview. This will preview Images, PDFs, audio and video files. Other files will be downloaded and can then be viewed with the proper application on the local Computer or Tablet.

Mobile App

We are steaming along with our changes and the completion of the work to release the SpiceCRM mobile App. This is well on its way and the current release has further changes embedded already. See the following short video we compiled on the upcoming mobile release.

The Release in Details

ModelpopoverHeader configuration

added the option to add a componentset as config option to the modelpopover header. That allows to customize the popover with a custom header component. This is e.g. used for the users popover to have a separate component that also renders the image of the user

added option to lazy load Stylesheets

added the option to also load css files as libs that can be lazy loaded. Just add style sheets with file ‘.css’ to the sysuilibs (or syscustomuilibs) table and load them via the metadata service.


added Mobile configuration for SpiceCRM Mobile app.

Multiple Sources for package loader
  • Supporting multiple package repositories for the package loader a new table has been added in the backend. Table sysuipackagerepositories can hold more than one repository.
  • If none is maintained the package loader will by default pull packages from the default repository. If you maintain separate (e.g. customer) repositories with separate configuration those repositories can be added here. The package loader will consider them and then load packages from this source.
Application wide logger

It should be possible to have a different message for logging (sugarcrm.log) than the error message (brought to the user). New method: setMessageToLog()

Changed EmailAddress field to support responsive design

changed the email addresses field so it will render nicely on mobile phones

CronJob for sysftslogs table: delete entries older than configured time frame

new sugar_config variable delete_logs_older_than = “1 week” time frame value is INTERVAL syntax. Default is 1 week when config is not set”

KREST Log Viewer

added a new admin component that view the KREST log entrioes. This is usefuly for debugginbg and tracing if the REST logger is enabled on the backend and allows an easy viewing and seaarching of these entries

Overflow in activity add Container

in the activity add container the menuitems have been changed so on smaller screens with more activitiy types enabled an overflow item is rendered

added user notification on elastic error

now and then a user might encounter an elastic overload error. In case the backend elastic engine throws an error, that error is also communicated to the user indicating that this is not a problem with no search results found but a technical issue occurred prompting the user to repeat the search

Set config_override value on language load
  • Set $sugar_config[‘syslanguages’][‘spiceuisource’] to ‘db’ in config_override.php after successful retrieve of languages
  • thus far after installing the language source for the UI had to be set manually. This is now done whenever a language pack is downloaded
store login credentials

Changes to the login form so now the username and password shoudl be properly recognized by the browsers and allow the user to save the credentials when logging on

Rate limiter for REST calls
  • in scenarios where external systems use the REST API extensively the REST load from the external system might have a negative impact on the overall performance if there are too many REST calls at the same time
  • a new option has been added to configure a rate limit that defines a given number of REST calls per time unit (of a given method) as limit. If that limit is occurred not further REST calls are accepted from that user and source until the rate is cleared again.
Optimize vardef translation into column type on repair/rebuild

“To ensure multiple database types support vardefs will sometimes be defined with a basic dbType and a specific length to match another column Type. Example dbType=’text’ and a len=4294967295. This definition creates a longtext column in mysql. Column will be created properly in database but repair/rebuild will not recognize that vardef match with column type This function matches definition with table column type for specific column types”

User Image upload
  • add capability for users to upload a user image.
  • Also add a generic component to load an image and crop it.
angular 7.2.6 update

updated Angular to 7.2.6

Manage Schedulers in UI

New Workbench option to manage Schedulers with the following Features

  • List View
  • Custom Detail View with Scheduler Logs.
  • Default Actions with Run now button.
updated file upload and Preview
  • updated of the file attachments so multiple files can be uploaded at once.
  • Stopped the event in case a file is dropped outside a drop area.
  • File Preview has been added.
  • Upload has been changed to pure HTML5 FileReader.
Metadata Service New Methods

Methods added to metadata service:

  • updateModuleListType
  • getModuleFilters
  • getModuleFilter
  • setModuleFilter
  • removeModuleFilter
Google Places Search Field

Methods added to metadata service:

  • added a new field for google places search that can complete name, address, phone number etc. from the Google places API.
  • To be used as name field in e.g. accounts or other objects where google places are relevant.
ACLController compatibility with SpiceACLController

Refactor static methods to non -static in ACLController class; Create ACLControllerInterface

set autofocus in app launcher

when the app launcher is opened these search field is automatically focused.

SpiceCRM 2019.01.001

Highlights of the January Release are updates on the search features, a new filter builder adding flexibility and reworks in many areas to start supporting full responsive design and the build of our mobile App.

Search Update

The search field at the top of SpiceCRM has been amended to enable the user to filer by module in the quick search already. Also the search results and global search dialog has been updated. When typing a search term SpiceCRM now searches automatically. The same is true for the search within a module. Also the search Results screen has been adopted to be responsive and support the capability to use it easier on tablets or phones.

Filter Builder

A new Filter Builder has been added that allows easy definition of Filters that can be used top create custom dashlets for the dashboard, customize Subpanels in Views and much more. It is a further step forward in our mission to make SpiceCRM the most flexible CRM platform we know and deliver a user focused UX that will drive unique customer experiences with a Team that can rely on a CRM platform to serve customers as best as they can.

Mobile App

Those who follow the story how SpiceCRM was built know that we came from the mobile app. With the current release we are taking further steps to support mobile form factors and make SpiceCRM a “responsive designed” system that can be also used easily on mobile devices. That effort is still ongoing and will continue throughout the first half year 2019.

Technologically we also pushed to Angular 7.1 – which you should not notice but it is important to be compliant and in line with the latest standards when it comes to operability and it security. We also updated the Lightning Design to Release 2.8.0

The Release in Details

Add Fieldset to Object Page Header

added a fieldset to the component object page header so the display field in the page header of an object can be freely configured.

support for smaller screens on top header
  • In the top header row in smaller screens the logo is removed. Components like admin and others are also removed to fit in the smaller screen size on mobile devices.
  • On small screens (below a with of 768px the search field is also simplified and the module selector is removed.
responsive changes to search results
  • also search results are changed in a first step to enable use on mobile devices and responsive design.
  • If the screen with is medium or below the module selector is removed and the results take up the complete width.
Angular 7.1.3 update

update to Angular 7.1.3

Backend: consider loaded company logo in login screen

SpiceTheme ignores loaded logo in backend. Integrate check loaded image in login screen

Logging with Transaction ID
  • added the unique transaction id to the log algorithms
  • enable to track logs by transaction and roundtrip
CRM Log Viewer

built in viewer tools in the admin section to display logs

Load reference in backend core only
  • changed logic so only core configuration can be loaded in the backend
  • all further packages then to be loaded via the frontend package loader
Backend installation site_url config wrong if protcol is https

fix in the installation with https protocol so the backendurl is written properly

send error message when FTS has an overload
  • react to error 429 on elastic
  • send a toast to the user with the message that elastic has an overload
collapsible Subpanels

added functionality to collapse subpanels

Support for content packages in package loader
  • added Support to also allow loading of content packages in the package loader. This enables to create packages with varying content that is not necessarily related to configuration of the system but simply adds data that is useful and speeds up the configuration process of the system. Typical examples are email templates, prebuilt dashboards, reports and other data.
  • content package for email templates has been created
  • content package for fts default settings has been created
  • added the filter builder to the admin section
  • added filters to dashlets
  • added filters to subpanels
  • added filters to relate fields
  • added filters to popup relate containers
added Dashlet Manager

a new section in the admin area to manage and define dashlets that then can be easily used to build custom dashboards

config.php https option for ElasticSearch
  • added optional protocol for the elastic settings
  • useful if elastic is running on https protocol
Dashboard changes for responsive Design
  • separation of Assistant pane to only show on wide screens
  • for smaller screens render assistant as part of the Home Module Menu
  • render dashboards in a vertical grid on small screens
  • added menu to dashboard module rather than selection pane on smaller screens
Improvements of Global Search
  • improved the global Search Field to allow search filtered by module.
  • separated the global search in the header and the global search in the route.
  • enhanced the global search results to a better design and cleaned up.

SpiceCRM 2018.11.001

Integrated Calendar

Highlight s of the November Release is a major update of the integrated Calendar. This adds a timeline view, adds the feature to show other resources calendars. It pushes the integration of the Google Calendar. So, if you allow the login with Google you can also display your planned events in the google calendar that are not in CRM as part of the calendar view making planning your professional day easier.

We also updated to the Winter Release of Lightning Design, redesigned the activity stream. It comes in a newer and cleaner design in line with the lightning design guidelines. We also added more filter options and even more flexibility for the admin to configure and enhance the stream.

Package Manager

Also in its first version we are releasing the package manager. This will become a central part of SpiceCRM managing the extendibility and flexibility to load packages (configuration, templates languages) and also easily uninstall them again. More on that will come with the next releases as we are continuously working to enhance the easy of system management and configuration.

Technologically we also pushed to Angular 7 – which you should not notice but it is important to be compliant and in line with the latest standards when it comes to operability and it security.

The Release in Details

Adapt code for KREST as standalone package

Separation and cleanup of the latest KREST package to allow Standalone Installation for those useres using Tools like KReporter standalone on SuiteCRM or SugarCRM

Backend Cleanup KDeployment* modules javascript/ gruntjob/ KREST calls
  • remove any trace of deprecated modules KDeploymentCRs,KDeploymentSystems, KReleasePackages
  • check the destiny of KDeploymentMWs in backend.
Backend ProjectWBSs label for parent_name


Backend repair/rebuild for audit tables
  • Creation is considered but not update when additional fields are defined.
  • Update shall be considered by repair/rebuild.
  • Make index names unique database wide
Better portal user creation/modification

Revision of the logic/code/ui for more user comfort and better error handling.

Calendar rework
  • Added additional views for timeline.
  • Added support for multi day events in all views.
  • Restyle on popovers.
  • Integration into Google Calendars< displaying also non SpiceCRM Events
  • added capability to display other users calendars
GSuite Integration
  • finetuning and updates on login with Google
  • Integrate Meetings and Calls with added logic hook definition
Google Cloud natrular Language API
  • added support for link with Natural language API
  • added email processor to process received emails and get sentiment on email
  • added integration of sentiment into email inbox display to highlight positive and negative emails for service processes
KReporter Fix custom function in select

Fix for KReporter 4.4

KReporter fix SuiteCRM Subpanel compatibility
  • ParentID is ignored in query: proper values could not be passed since variable currentRecord in JS is only in SpiceTheme.
  • Added correction to consider SugarCRM CE / SuiteCRM.
Lost password via EmailTemplate+Compiler
  • updated lost password email logic so it complies with the SpcieCRM email Template Compiler
  • added logic to the email template compiler so additional parameters can be passed in
MediaFiles: Automatic creation of required folders
  • changed logic so default folders for storage for media files are automatically created
  • minor coding changes and cleanup
  • Possibility to turn off trash bin
Name Formatting
  • added name formatting to the user preferences
  • rework on full name field to properly interpret user preferences
Assignment Notifications
  • enable creation of module specific assignment templates so for each module an individual styled and defined template can be used to notify a user that a record has been assigned. Including information on the record assigned.
  • respect users language and send in the language of the user
Optimistic Locking
  • changed the audit log so by default all fields are audited
  • changed the ui logic so only changed fields are sent to the backend
  • added a backend check for the changed fields since the last load on the frontend
  • added an optimistic locking resolution dialog in the frontend to let the user handle such a situation
Redesign Lookup & Relate Fields
  • redesigned the lookup and relate fields
  • changed the component structure
retrieve real values after POST
  • added a config parameter so real values on the db can be returned from a POST call
  • can be configured since it has a potential negative performance impact in high volume installations
Speech Recognition
  • added a fix in the speech recognition dialog
  • System potentially did hang after pausing and continuing on
Angular 7 update

updated core Angular to 7.0.1

Lightning Design Update
  • updated Lightning Design to 2.7.4 (Winter ’19)
  • updated the role picker dialog
User Preferences

fixed user preferences bug for admins

Role Loading

in some situations after a logoff and login the user might have had the wrong role

added config table syscustomhooks
  • added the package and version fields to table syshooks so hooks can be distributed as part of packages from the reference config.
  • Additionally a table syscustomhooks has been added to add customer specific hooks in the configuration of the database.
added transaction control in REST Calls
  • added an option to handle Database updates transactional on REST Calls
  • enabling commits and rollbacks in case of handling of more critical and transactional data
UI Add User & User reset password button
  • Button Reset Password for user details view added.
  • Auto generate password converted to a checkbox, which will be filling the password field with the auto generated password and showing a copy button when it’s checked.
  • by Email option added. to automatically generate password and send it via email
  • Hide password button added for regular users
new field type components
  • color Enum: display a color indicator with an enum value
  • multiselect MultiEnum: list an select with multi select option
update Actionsets
  • change in rendering actionsets so the only the first button is shown and the remaining buttons are in an overflow
  • changed the way how custom action item components are developed