Skip to main content

Release

2023.03.001

Announced on

SpiceCRM 2023.03.001

This version contains many improvements for developers & administrators: automated cache reload for a more comfortable layout configuration; workflow monitoring dashboard and new components to display charts whereever in the CRM.

Workflow Monitoring for administrators

How many open workflows are there? Which ones failed? SpiceCRM is now equipped with a workflow monitoring dashboard displaying clickable charts and workflow lists to track errors or see which workflows are stuck because of decisions to be made.

SpiceCRM 2023.03.001 – Workflow Monitoring for administrators

Manage Business Trips

In the previous version we introduced a group of modules to manage employee skills and trainings. We added business travel modules so that employees can plan, log and settle up their business trips. You can define a workflow definition to get the business trip approved and get the whole expenses checked.

Re-designed template builder

We re-designed the template builder with usability in mind: more space to write and a preview. The SpiceCRM page builder can now be used to design any kind template: PDF or email. The name of the file when you generate a PDF can now be dynamically defined.

SpiceCRM 2023.03.001 – Re-designed template builder

Email attachment handling

SpiceCRM enables to save email attachment on the parent bean like a contact or a service ticket. When you send an email from or retrieve an email to SpiceCRM you can easily clone the email attachments and save them on your parent bean. You can select one or more attachments to be cloned. The attachments which you have already saved are disabled from selection. The cloned attachments can be found under the “FILES” Tab. Please note that a file is only stored once on the server. When you clone, you only create an additional link to the attachment.

Release Details 2023.03.001

HotFix CR1001262: Drag&Drop emails from Outlook[hotfix]

Too precise check on the content array which would cause an upload cancellation

CORE fixes find Charset in Email [hotfix]

CR1001197: CORE fix loss of related names in embedded models in recnet service by deep cloning the data [hotfix]

CR1001196: fix disappearing related fields in salesdocs container [hotfix]

Product name would not appear in salesdoc item

CR1001195: CORE bugfix in get country name [hotfix]

Country name was not rendered properly

CR1001189: CORE HOTFIX for link to not throw error [hotfix]

CR1001188: HOTFix BCC Address in GMail Trait [hotfix]

CR1001187 EWS: fix heart beat subscription [hotfix]

When trying to revive a subscription we now catch if the user is active in the CRM and if the mailbox on the other side really exists. No exception is thrown, only an error message is log. Throwing an exception you break the EWS heart beat cron job

CR1001186: HotFix in Relationship definition for prospectlists_prospectlistunsubscribes [hotfix]

We corrected the relationship definition which would break any attempt to call a prospectlist. We also corrected 2 package configurations for the module ProspectListUnsubscribes
REPLACE INTO `sysdictionarydefinitions` (`id`, `name`, `tablename`, `tabletype`, `audited`, `sysdictionary_type`, `description`, `version`, `package`, `status`, `deleted`, `sysdictionary_contenttype`) VALUES ('1e1c42dc-56fa-4261-9525-fde57bcc7bfe', 'ProspectListUnsubscribe', 'prospectlistunsubscribes', NULL, 0, 'module', NULL, '2023.03.001', 'campaignmanagement', 'a', 0, NULL);
REPLACE INTO `sysmodules` (`id`, `module`, `module_label`, `singular`, `singular_label`, `icon`, `track`, `favorites`, `duplicatecheck`, `actionset`, `bean`, `beanfile`, `beantable`, `sysdictionarydefinition_id`, `visible`, `visibleaclaction`, `tagging`, `acl`, `acl_multipleusers`, `workflow`, `reassignable`, `reassign_modulefilter_id`, `version`, `package`) VALUES ('49a0cd95-aade-4704-80a2-956ee41e07b3', 'ProspectListUnsubscribes', 'LBL_PROSPECTLIST_UNSUBSCRIBES', 'ProspectListUnsubscribe', 'LBL_PROSPECTLIST_UNSUBSCRIBE', 'process_exception', 0, 0, NULL, NULL, 'ProspectListUnsubscribe', NULL, 'prospectlistunsubscribes', '1e1c42dc-56fa-4261-9525-fde57bcc7bfe', 1, NULL, 0, 1, 0, 0, 0, NULL, '2023.03.001', 'campaignmanagement');

Hotfix for CR1001130: recent.service: manipulating data before storing recentItems & moduleRecentItems objects in browser cache [hotfix]

The application would die after clicking a recent view item from the global search bar

CR1001111: Added backward compatibility for the display of the sender e-mail address [bug]

Systems containing imported e-mails before the technical change regarding the handling of the email address in an e-mail and their display will not diplay the sender (from) address. We added a workaround that will display the value of from_addr in case there is no entry in the dedicate e-mail addresses array.

CR1001142: Default FTS settings for e-mail addresses [feature request]

We added a better analyzer for the indexing of e-mail addresses. "spice_email_all" is now the default analyzer in FTS configurations where we index email1 field. Change manually on your instance after upgrade if you wish to use it. Increase max

CR1001175: Workflow System Tasks: No Dummy System Actions any more [bug]

It is no longer necessary to also specify a dummy SystemAction when using a custom SystemAction.

CR1001066: disabled logged in with microsoft [bug]

disabled active logged in with microsoft if user is not the current user

CR1001149: BugFIx: fieldQuestionnaire: QuestionnaireRender is not displayed [bug]

CR1001121: Navigation with keyboard in telephonysearchmodal [change request]

extended navigation with keyboard in telephonysearchmodal

CR1001055: Open PDF in subtab [feature request]

This feature enables opening SpiceAttachments (i.e. files, images, etc.) in a new subtab. With this change request, the attachments will open in a new subtab per default. The opening of the attachment in a modal was moved to the preview button.

CR1001088: Business travels: added some fields for to TravelSegments [change request]

In order to calculate the costs to be refund to the employee when they use their private car to travel we added 2 fields for now that store the costs per distance unit (costs_per_unit) and the additional costs per unit (additional_costs_per_unit. Example: the employee takes a colleague as a passenger)

CR1000878: Restrict API Users to specific IP Addresses [feature request]

CR1001046: Frontend Development - Proxy [change request]

exposed assets to dev server to enable fetch from assets while ng serve is running. e,g, the file /assets/icons/spicecrm.svg, will be retrieved properly on the dev server.

CR1001137: Bug Fix Page Builder Section Drop [bug]

Fixed bug page builder section drop not possible when the content height is bigger than the page height.

CR1001126: Additional operator "is not one of" for module filters [feature request]

We added the operator to be able to revert an "is one of" filter that would not be performant. Something like "open opportunities" would check almost all possible sales stage values (is one of Qualification or Analysis or Proposition or Proposal or Negociation). Using "is not one of" emables to check only Closed Won, Closed Lost and Closed Discontinued

CR1001071: Bug Fix - Page Builder Parse HTML [bug]

Fixed bug: Page builder cannot parse html element content with single quotes.

CR1001125: Minor Changes Backend [change request]

SpiceBean: process_list_query return the total count from the count query if a limit is set

DB: Added date_diff covert function to MysqliManager and OCI8Manager

Notes- Vardefs: Added new field external_id

CR1001129: Template compiler: added html body cleanup [change request]

When an html field is parsed in a template we need to cleanup the content so that only the body content is taken into account. Furthermore we need to remove unaapriopriate tags like style or iframe

CR1001132: Remain in the current view after deleting an e-mail [change request]

E-mails are deleted mostly from the activity stream. It happens when you drag&dropped an e-mail to the wrong contact (or any other record) . After deletion the user used to be redirected to the home screen. We corrected the configuration of the delete button in the action set "Emails Object Page Header" so that the user remains in the main record or the e-amil is just removed.

CR1001174: Letters Module is now part of activities variable definitions [change request]

When adding activities capability to a module, we simply add the "activities" template to the variable definition. This templates adds calls, meetings, tasks, emails and notes link and relationship defintiions. Now letters are part of it.

CR1001141: API Log Viewer: Prevent JS Error when JSON is invalid [bug]

The Problem/Bug: By default, the response to requests is represented as JSON. If it is not JSON, a Javascript error will occur and all output will break.
Solution: Catch JSON errors and display the response as plain text.

CR1001073: Email Templates - Attachments [feature request]

Added Attachments Panel to EmailTemplates to be returned on parse. Adjusted Workflow/EmailHanlder to send the EmailTemplate Attachments with the email. Added a new Relationship with Output Templates to generate a PDF Content as a temp Attachment for EmailTemplate parse return. Added a new field content_method on EmailAddress to call a system method to override and adjust the parse return value.

Post deployment action: Reload emailhandling package
Repair cache and database

CR1001097: Copy rule additional function nl2br for calculated value parameter [change request]

When we copy a value from a text field to an html field we need to convert breaklines into
tags. The function name to enter in calculatedvalue field in the copy rule is "nl2br"

CR1001083: Bug Fixes [bug]

Bug Fixed: Frontend field email addresses on cancel does not reset the changes. Focus lost on typing.

Changed model.service::cancelEdit to emit changes after resetting data from backup data.

CR1001165: Manage Teams and Access rights with organizational units and employees [feature request]

Post deployment action: reload core package

CR1001016: Documentation missing for executeCopyRules field config option [feature request]

set 1 to prompt for confirmation before copy
set 2 to copy wihtout prompting
already in description in fieldParent
Missing in the others.
Can we change to string? What about BCW?

CR1001171: Select all files when adding files from record [change request]

it is now possible to select/deselect all files when changing files from record

CR1001059: Bug Fix - Frontend Email Addresses Field [bug]

Bug fixed: Email addresses field when clearing the address and retyping, the existing email address is overwritten.

CR1001128: Campaign Task Deactivate Button [feature request]

Added a new deactivate button for campaign task to enable deactivating the task after it has been activated and delete all the unprocessed related log entries.
Adjusted CampaignTaskActivateButton and CampaignSendMailButton added unsubscribe and reload list.
Added an acl custom action "deactivate" to enable/disable the button.

CR1001062: LDAP multiple connections: only first connection would be looped [bug]

The ldap_settings table can contain multiple rows for multiple connection settings. When the first connection didn't work the logic went directly to the fallback check on a SpiceCRM standard authentication instead of looping through all connections before going to the fallback. Now corrected.

CR1001116: Opportunities potentials performance improvement [change request]

When potentials are in use and combined with opportunities performance in list view and Kanban view was bad since all potentials were retrieved for each hit. The logic getting the potentials was triggered in an after_retrieve hook. We moved it to Opportunity::retrieveViewDetails() so that potentials are only retrieved when the opportunity gets opened. We deactivated the corresponding hook in the potentialmanagement package.

Post deployment action: reload potentialmanagement package if you have it in use.

CR1001150: fix for wrong subject-encoding in emails [bug]

the condition for email-subjects encoding was using custom code for detection

CR1001140: Default FTS settings for phone numbers [feature request]

Looking up a contact using part a phone number is a common user scenario. Most phone numbers are entered with white spaces, brackets, hyphens or any other kind of character with which they try to make the phone number readable. A phone number like +1 (212) 435-2309 would be difficult to find if the user searches with 212435.
We added the spice_phone analyzer which makes it possible with elasticsearch 8 (!) to index the digits only.so that entering 212435 would return the contact with a phone number like +1 (212) 435-2309

CR1001106: Add file from record in attachments [change request]

added a button add from record in spiceattachments panel, now a file from a record can be attached to email without downloading the file

CR1001069: Merge Beans - Copy Relationship Fields [bug]

Bug fix: On merge m2m relationship fields were not copied. Like email address primary flag.
Adjusted the merge logic to consider copying the relationship fields for all links on merge

CR1001098: Reporter - New Date Operators [feature request]

Added new date operators "in the last n days" and "n days ago" to the reporter filter.

CR1001053: Configure fieldset/componentset for any status network button item [feature request]

This feature brings more flexibility to the StatusNetworkButtonItems. From now on, it's possible to render a different fieldset and componentset for each status field. OR one fieldset/componentset for all of the StatusNetworkButtonItems.

The bean Agreements has 5 different status values. The change of the status can be managed by StatusNetworkButtons, so the user can change the status on button click. Sometimes it's necessary to make amendments to data when changing the status (i.e. the custom wants to enter the reason for cancelling an agreement). In this case, the administrator, can define a different fieldset for this one particular status or for each status field. This brings much more flexibility because until now it was possible to define only one fieldset for all StatusNetworkButtonItems.

CR1001115: Added limit parameter for SpiceKanban component [change request]

Default number of records to be retrieved is 50. In the KanBan view it would load more since the 50 are applied to each Kanban Stage. It is now possible to set the limit in the module configuration for SpiceKanban.

Post deployment action: reload the core package to get the change made in ObjectRepository > SpiceKanban

CR1001117: Delete link tree does not delete when only 1 entry found in the list [bug]

In category trees manager you can link your tree to one or multiple modules and define the fields for which the tree values are meant. To delete such a definition, you select the tree then click the "link" icon. A modal window opens. You may click on the delete icon. The entry will disappear from the list. If you only had the one record the save button would remain disabled and therefore you couldn't confirm the deletion. We removed the check on the number of entries in the list which caused the save button to remain disabled.

CR1001145: WebSMS: Prevent sending with numbers containing non-digits [change request]

The Service WebSMS does not accept mobile numbers containing other characters than digits (except "+" at first position). So strip those characters before send.

CR1001172: Module filter & Elastic filter: added "n years ago" [feature request]

CR1001080: Developer mode removed [change request]

We removed the developer mode capability because of performance issues. We replaced in appropriate logic for error handling with the stack_trace_errors config variable.
The developerMode config variable used to be implemented in:

# ErrorMiddleware + DeveloperMiddleware + RESTManager
Replaced by stack_trace_errors
stack_trace_errors has now 3 possible values 0 (for off), 1 (will throw the main error information), 2 (will thrown the full stack trace)

# class SpiceCache => removed from public static function get($key)

# class VarDefManager::loadVardef => removed code part
No longer necessary since we have SpiceCache

# class LDAPAuthenticate was used for more detailed ldap log.
Logic moved to the check on the ldap setting ldap_debug (CR1001138)

# removed from class CoreController::getSysinfo()
added stack_trace_errors instead

# remove from class AdminController::getSysinfo()
added stack_trace_errors instead

# Removed from Workbench General Settings
Updated stack_trace_errors from boolean to int value

# Removed from Installer
added stack_trace_errors instead set to 0 by default

# Removed in class Configurator $allow_undefined
stack_trace_errors already present there

# Removed the frontend developerMode Panel for admin User

# Removed in session.service headers

# Added SpiceUtils::getStackTrace() which returns an int value 0, 1 or 2

# SpiceUtils::inDeveloperMode() is deprecated and now returns SpiceUtils::getStackTrace()

Post deployment action: remove developerMode from config.php / config_override.php

CR1001087: System Chart Components [feature request]

Added new System components SystemChartMultiDimensional and SystemChartOneDimensional to display a one/multi dimensional google chart.


<system-chart-one-dimensional charttype="Bar">
<system-chart-one-dimensional-value label="LBL_AMOUNT" value="´33"></system-chart-one-dimensional-value>
</system-chart-one-dimensional>

<system-chart-multi-dimensional charttype="bar">
<system-chart-data-column column="" of="" chartdata.data="">
<system-chart-data-row row="" of="" column.rows=""></system-chart-data-row><br>
</system-chart-data-column>
</system-chart-multi-dimensional>

CR1001058: Frontend Model Service - New Method [feature request]

Added new method rollbackRemovedRelatedRecords to rollback the marked to remove related records from the link_name.beans_relations_to_delete object.

CR1001103: Show a link even if the name is an empty string [change request]

Implemented in fieldRelate and also fieldLinked.
Text from label "LBL_RECORD_WITHOUT_NAME" is shown.

CR1001147: Missing fieldset input for component SpicePathRelatedListTiles [bug]

The SpicePathRelatedListTiles component may be used as a subpanel to display only the stage path for each item. See the open opportunities panel under an account. When the list of items gets longer you may click on "view all" to switch to the full list. Since the parameter "fieldset" was not registered in the SpicePathRelatedListTiles configuration you couldn't select which fieldset shall be used for that display. The system retrieved the core list view fieldset. We added the parameter "fieldset" to the component config so that you can now select any fieldset for the "view all" display.

CR1001070: Action Button serviceassigntobutton does not pass the status value properly [bug]

Using the ServiceTicketAssignToButton in a status network record would load the current status a serviceticket but not set the taret status defined in the status network record. We corrected the logic.

CR1001157: Copy componenset does not appear in componenset dropdown and breaks javascript [bug]

When you copy a component set the new componentset name shall appear in the dropdown list after save. It wasn't the case and therefore the whole view got broken. Fix done.

CR1001130: Improvements of Global Recent Items [change request]

Improvements:
- recently view items are not loaded on system start with load task item anymore
- are not cached in the backend but in the browser cache (appdata)

Post deployment action: Please delete the entry with the method "SpiceCRM\modules\Trackers\api\controllers\TrackersController->loadRecent" from the table "sysuiloadtaskitems".

CR1001072: Email Address - Set Invalid With Bounce Limit [change request]

Frontend: Disable editing invalid email address for field email addresses.
Backend: Added a new field "bounced_count" to EmailAddresses. This field will enable counting the bounce status before setting the invalid flag on the email address. If the limit set in the workbench/email address "is_invalid_after_bounce_limit" is exceeded, then the system will mark the email address as invalid. This feature is useful when using a mailbox handler webhook like "Mailgun" that might for some reason mark the email address as invalid but in the next try it come out that the email address is not invaild.
The default value of "is_invalid_after_bounce_limit" is 0 which means the system will immediately set the invalid flag for the email address.

CR1001091: Workflow - New Task Type Generate Bean [feature request]

Added a new task type generate bean, which enable creating a new bean out of the workflow source record. e.g. create a workflow that generates a contact out of a lead record.
Also adjusted the workflow task details view to show the type configs at the top e.g. email options.

CR1001136: Template Compiler - Body Only Param [feature request]

Added a new param "bodyContentOnly" to the template compiler to return only the content of the body element.

CR1001054: Workflow - Bug fixes [bug]

Bug fix: closing other tasks by system even if they are already completed.
Improved error handling. Start/end task no save on failure. Added save on task resolve before executing the next task.

CR1001178: new module OutputRevisions [feature request]

a new module and functionality has been added to manage, track and store PDF output files. The intention is to allow keeping record of PDFs generated and keep them as original. Preventing potential data loss as these documents might (e.g. in case of invoices or credit notes) be legally binding and need to be kept as original. The new function is added as new tab in the salesdoc and allow creation of new OutputRevisions, the display of them, the download, print and send via email. It also will keep track of who created new Outputs when and for what reason documented by a note from the user.

CR1001077: ServiceTickets: pass on a ticket and get it returned [feature request]

Following scenario: I work on a ticket located in the service queue of my department. I only have access that queue. In order to solve the problem described in the ticket I need to pass on the ticket to another department and when they are done I need to get the ticket back in my queue.
In order to request a ticket to be returned to the sender queue we added a "return to queue" flag in the "Switch Queue modal window". When the flag is set the system logs the original queue in the ticket. When the user of the other department opens the ticket, the usual "Change queue Icon (or button)" does not appear. The user sees another icon "return to queue". When the user is done with the job, a click on that icon will open a modal window "return ticket to Queue XY" and containing a comment field (as in the change queue modal window) .

CR1001060: SpiceImporter: import a csv file with only 1 value per line [change request]

We had a concrete case where the customer needed to import a CSV file containing only 1 value per line. We added the "end of line" delimiter option to make the import of such a file possible.

CR1001152: new DB Manager Method fetchAll [feature request]

a new methof fetchAll has been added to the DB Manager. This allows to send a query and get all records back for that query as array

CR1001086: Download Button for SystemObjectPreviewModal [feature request]

Some content causes problems with display, for example certain video formats.

Then the browser does not offer a download option. Even if content can be displayed, it may be - depending on the content type - that the browser does not offer a download option.

So there is now an explicit download button, offered by the CRM, to download any content of any type.

CR1001118: FTS Aggregate display of tree category renders label instead of the corresponding translation [bug]

Aggregate on fields of type fieldCategory would display the technical label name instead of its translation. We made the necessary correction in fieldCategory.display_value().

Post deployment action: Reload the service package after update.

CR1001095: Marketing Campaigns Improvements [change request]

Added new field unsubscribe_redirect_url to mailbox and a new system scope setting workbench/email tracking/unsubscribe_redirect_url.
When the user clicks on the system generated unsubscribe link in the email, the request is sent to the crm unsubscribe handler api to be tracked and then redirect the user to the given unsubscribe landing page url.

Bug fix: Email: style sheet is added before the html starting tag,

Added a function to opt out the email address when the user clicks on the system generate unsubscribe link.

Used the compiler for the mailbox footer and header

Added pre-send check on campaign task with the following conditions:
Recipient has is_inactive == 1 means true
Recipient has gdpr_marketing_agreement == 'r' means refused
Recipient has an opted out primary email address

Added new fields for campaign task:
save_email to toggle save the campaign emails
disable_marketing_agreement_check disable the marketing agreement granted check
disable_opt_out_check disable the email opt_out status check
disable_inactive_check disable the inactive flag check

Added new field activity_comment for campaign log to display a user friendly translated message for the email sending error reason.

CR1001063: Search Term Field - Improvements [change request]

Added new system component SystemInputSearchTerm to unify the search field layout and error handling. The new system field ist used in the list view, calendar, and mailbox view. Added error message icon and popup on the search field. Removed the max ngram check.

Post deployment action: Reload language package to get the error message label

CR1001092: Navigation with keyboard in field relate and field parent [feature request]

added navigation with arrow keys, enter and escape for field relate and parent, if only one matching result it will be accepted with enter click

CR1001096: Role menu manager interface improved [change request]

added prompt on delete of role, layout changed for better display

CR1001081: JobApplicant: activities and application evaluations [change request]

In 2023.02.001 we prepared the layouts for the JobApplicants module. In this release we added the necessary backend variable definitions in order to be able to use the activity side bar.

CR1001123: new filter for categorytree nodes in reporter [feature request]

added new filter type in KReporter so for fields linked to categorytrees the values per treenode are rendered as in an enum for easier reporting based on the category fields

Post deployment action: Check if you have any record in sysdictionaryitems whith that kind of field. They shall be removed and defined in files... with type category

CR1001061: Bug Fix - Outgoing Emails Corrupted Content [bug]

By outgoing emails fixed the bug: corrupted content added xml tag to the beginning of the emails instead of html.

CR1001114: ACL module actions will not be considered if there is a custom entry for that module in syscustommodules [bug]

Let say we have a syscustommodules record for the core module ServiceQueues. The record has a different id than its counterpart in sysmodules. We added an acl module action for ServiceQueues. The modulid stores for the action is the one from sysmodules. But the check on the action will use the id from syscustommodules. The action check will never return true,
We modified the SpiceModules::loadModules() so that the id of the core module is kept in the moduleDetails which are used for the acl action check.

CR1001135: Module List - Filter Context Param [change request]

Refactored "filtercontextbeanid" to "filtercontext" to accept an object of module data (module?: string, id?: string, data: object)

CR1001122: Change Tree link modal to allow selection from dropdown [change request]

in the tree manager for the category trees the modal has been amended to offer the fields from the module in a dropdown so no typing is necessary making the assignment of the tree easier.

CR1001127: Developer Code Improvements [change request]

Added a new frontend interface ActionSetItemI to be implemented when building a new action set item button component.
Added a new frontend interface ComponentSetItemI to be implemented when building a new component set item component.
Added a new frontend interface ModalComponentI to be implemented when building a new modal component.

CR1000933: Workflows - Improvements [feature request]

Added new task type to handle closing other workflows.
Added workflow a cron interval field to the workflow definition to enable running workflows on a specified interval date e.g. daily once.
Added field retention days to workflow definition to set a retention period for a workflow. Added Job "mark deleted retention exceeded workflows and their tasks".
Added permanently delete marked deleted workflows and their tasks.
Added manual, manual once workflow types to enable processing workflows manually.
Added workflow plugin to the reporter more to enable processing a workflow for the report result list or by the reporter scheduler.
Added a list of the manual workflows to the workflow panel view to enable processing the active manual workflows which matche the start condition.

Bug fix: starting scheduled workflows synchronously.
Bug fix: starting run once workflows even if the same workflow exists once.
Bug fix: saving the start task to the database if the start condition does not match.

Post deployment action: Reload package workflow

CR1001156: Missing link definition to emails when the parent is a contact, a consumer or an account [bug]

Emails are related to contacts, consumers and accounts in a many-to-many relationship. They also have one-to-many relationship to those modules per parent_id. Some definitions for the corresponsding relationships and the link to be used were missing. We added them so that a record merge would consider all relationship types.

CR1001102: Email display with base64 encodes images [change request]

An HTML e-mail body may contain multiple images which are embedded as base64 string by the CRM for the e-mail display. For the display as iframe we currently pass the full body content as base64 value. Unfortunately thre is a memory limit when passing a value to the src attribute of an iframe tag.
The new solution: we give a URL (CRM API route) to the src instead of a full base64 string. This way no limitation and the browser takes care of loading the content.
We added:
- the API route /module////html
- we defined the method getFieldHtmlContent() for Bean Objects that will be called by the api controller if the method exists.
- added a new config "iframe_as_blob_url" to field richtext to enable the separate api call for the content as blob url.

CR1001153: KReporter fix query built with limit 0, 0 [bug]

Somehow an empty selection limit was not interpreted properly. We now remove the start and limit parameters from query building when they are both set to 0.

CR1001076: FieldUrl new configuration parameters [change request]

Added new configuration parameters icononly, iconname and inputurl to field type fieldurl

Post deployment action: reload core package

CR1001094: New Mailbox Template Function - generateUnsubscribeLink [feature request]

Added a new template function for the mailbox footer to enable generating a trackable marketing unsubscribe link.

Post deployment action: Reload email handling package

CR1001133: ActionSet Manager: fix action config properties for standardActions buttons are not visible in Actionset Manager [bug]

Taking the DELETE button as an example: the DELETE button has the noredirectoncomplete property. This property is now visible in the actionset manager.

CR1001033: M2MRelationship - Reindex Beans [bug]

Fixed bug for m2m relationships that the beans relation was not properly indexed after adding the relationship. Problem discovered in the mailbox processor that assign all addresses to contacts but the email does not appear in the activity stream of those contacts.

CR1001167: Reload config button was removed [change request]

Admin users used to have the reload configuration icon on the top right of their screeen. This reload Icon was removed in 2023.03.001. Adminsitrators shall use the "reset&reload" button available in the window popping up after a click on their avatar.

Post deployment action: We removed the following entry from the Global Header componentset
REPLACE INTO `sysuicomponentsetscomponents` (`id`, `componentset_id`, `sequence`, `component`, `componentconfig`, `version`, `package`) VALUES ('e2af9a9a-0da5-8701-bf5b-0235a2d3197d', '5378fe86-58d3-b067-3ca6-30af9734bad7', 3, 'GlobalHeaderReload', '[]', '2020.01.001', 'core');

CR1001105: Download button for SystemObjectPreviewModal [feature request]

Some files (e.g. videos) are problematic; the browser displays them incorrectly. The only way out is to download the file. So a download button is needed.

CR1001138: LDAP settings: additional field ldap_debug [change request]

Value is 0 per default. When set to 1 the ldap option LDAP_OPT_DEBUG_LEVEL 7 is sent with the connection attempt. That ldap option LDAP_OPT_DEBUG_LEVEL used to be set when developerMode was on.

CR1001067: ObjectActionBooleanToggleButton [feature request]

This Button toggles a boolean field from 0 to 1 or vice versa
Which boolean field should be toggled can be defined in the actionset

CR1001084: Clone Attachments from Email to Parent Bean [change request]

The SpiceCRM enables to save e-mail attachment on the releated parent bean. When you send an email from or retrieve en email to SpiceCRM you can easily clone the email attachments and save them on your parent bean. You can select one or more attachments to be cloned. The attachments which you have already saved are disabled from selection. The cloned attachments can be found under the "FILES" Tab.

Post deployment action: Please reload the "Email Handling" package to get the newest configuration.

CR1001024: ServiceTickets: assign a user [feature request]

Assigning a user is now possible via assign button.

CR1001144: Campaigns: Sanitize send and test action buttons (also for SMS) [bug]

Campaigns:

Until now the action buttons "send" and "test" are disabled (gray) when the type of the CampaignTask is not "Email" and not "SMS". In case of "SMS" the button is anyway disabled.

Modification: Don´t show them disabled, hide them instead.

Wird bei CRM4Blood schon verwendet.

CR1001085: New System Component - Input Cron Expression [feature request]

Added new system component "SystemInputCronExpression" that accepts a cron expression string and enable a user friendly setting for the expression values.

CR1001166: custom datefields sort direction [feature request]

In the fieldset configuration for a list it is now possible to define an expected sort direction on the first click applied to a sortable column. The first click will sort A->Z by default. Set Z->A where it is more likely to be expected.

CR1000738: LMS Training View [feature request]

Create a custom view that allows for easy navigation of training courses and their individual chapters

CR1001160: Workflow Timestamp & Improvements [bug]

Workflowtasks are now saved with a microsecond timestamp inside the field date_timestamp. This allows to better track the initialized and executed workflow tasks. The sorting of the workflow tasks is now done in the backend. In the fronted you can see the workflow tasks sorted by date_timestamp in ascending order.
The Workflowpanel has been improved. There is a new button which reloads all open workflow tasks.

CR1001093: Hooks manager improvement Webhooks [change request]

added webhooks to the hooks manager interface

CR1001108: Charset interpretation for e-mail display [change request]

.msg e-mail often lack a proper meta charset tag. We now analyse the html code before it is displayed and try to add UTF-8 when missing.

CR1001163: Sync to outlook button would not render [bug]

Having MS Exchange or MSGraph synchronization in use, a CRM user may decide to synchronize contacts from the CRM. By clicking on the "+ outlook" button, the user will trigger a synchronization between the CRM and its MS Groupware application. That button couldn't be rendered due to a data type change in the user configuration. Now fixed.

CR1001045: UI Config - Reload Cache Automation [feature request]

Adjusted the workbench components on save to automatically reload the frontend and the backend targeted cache. This will replace the "reset and reload" button.
Implemented for the following workbench components:
- Validation Rules Manager
- Select Tree
- Role Menu Manager
- Object Repository Manager
- Module Filter Builder
- Module Configuration
- Component Sets Manager
- Action Sets Manager
- Default Preferences
- Modules and Custom Modules

Other the other workbench components will follow in the next release

CR1001068: Address Referencing - Apply on Merge [feature request]

Adjusted address referencing logic to update the parent id field for the referenced children on merge

CR1001151: SalesPlanning Tool: use BeanFactory::getBean() to create an instance of a class [bug]

Syntax corrections in some of the classes where an object of the class itself is initiated: use BeanFactory::getBean() for that and not new self() or new [ClassName]

CR1001100: Height value set in the fieldconfig for a richtext field for not processed properly by the html editor [bug]

The height set in fieldconfig and passed to the editor was not interpreted correctly. The parameter height has to be entered with a unit like px. or the editor we nee dto remove the unit if given.

CR1001119: Backend Mailbox Transport Handler Code Improvements [change request]

Added a DispatchResponse class as a return type for the TransportHandler::dispatch method to unify the response object returned from the email handler. This helps preventing bugs for further mailbox developments.

CR1001075: spiceurls [feature request]

It's possible to save external URLs per drag and drop in CRM.
There is a new "SpiceUrlsPanelHeader" which displays the uploaded URLs. If you want to add it to a (custom) view, create a new ObjectTabContainer", select your "ObjectTabContainerItem" and link it to the core componentset "Urls Container" which holds the component "ObjectRelatedListUrls".

CR1001065: Load default graph ActiveAPI [change request]

added loading of default graph config

CR1001029: Frontend - ObjectListView - List Component Config [change request]

Pass component config from the componentset to each list component to enable more flexibility configuring the list components. One important restriction: you cannot use ObjectList as list component.

Post deployment action: I am currently not able to replicate the desired effect, as it is a new feature I will postpone debugging to release 2023.03.001

CR1001154: Added option "truncate" to fieldhtml [change request]

added option "truncate" to fieldhtml, if set takes the html as as and adds a class specific for truncating markup

CR1001090: Minor Changes Frontend Components [change request]

SystemModelProvider: Prevent initialize if module empty. Set the model id event if it's undefined.
SystemDropdownTriggerDirective: Max width of the list content same as the width of the trigger.
SystemSelect: Show pill container on blur. Replaced @Input [selectList] with the new child component SystemSelectOption. New syntax:

<systemsystem-select>
<system-select-option value="example1" display="Example 1"></system-select-option>
</system-select>

Page Builder: Layout improvements stretch the builder field container in display mode.

Bug fix: edit modal in fullscreen is behind the editor container.

FieldSystemLabel: Added config option added display_as_translated to display a translated label in view mode.

Object Table added loading stencil and fixed header inputs

Scheduler Job Method: Bug fix: on edit modal method empty

CR1001146: Removed activity_status_date_modified mapped in rel_fields in Calls + Meetings within links to contacts, users and consumers [change request]

This field is not in use and might trigger an mysql error when inserting records in the many-to-many tables calls_contacts, calls_users, meetings_contacts, meetings_users. meetings_consumers. Since we have no implementation of this use we removed it. Should you need to store the date when the accept_status was set, please create a custom field in the many-to-many table and add the mapping for the rel_fields.

CR1001143: FTS Settings and max_ngram_diff too small when increase max_ngram [bug]

The FTS index parameter max_ngram_diff is set to 20 per default. It represents the maximal value for the difference between the min_ngram (default 3) and the max_ngram (default 20). If you set max_ngram to 30, the difference would make 27 and exceed the 20. This would prevent you from creating the FTS index by returning an error. We therefore now set the max_ngram_diff with the same value as in max_gram so that the max difference allowed is always higher than the real diffrence.

CR1001131: Moved frontend event components located under campaigns to events module [change request]

Moved components: EventRegistrationButton, EventRegistrationModal, EventRegistrationModalList, EventRegistrationModalType, EventWithCampaignActivateButton

Post deployment action: reload campaign management and event management pakages if in use

CR1001139: Retrieve Service Tickets [change request]

The function retrieve() and its callable have been rewritten for ServiceTickets Class. When the details of a ServiceTicket are retrieved, the method "retrieveViewDetails()" is being called.

Post deployment action: Please make adaptations if you have customized this method. Call the method "retrieveViewDetails()" instead of "retrieve()"

CR1000861: SpiceCRM Standard for ServiceTickets [change request]

Use of ServiceTickets in SpiceCRM is now settled.

CR1001159: fix for proper display of calendar week [bug]

in the datepicker and the calendar under some circumstances the week of the year was not calculated properly. This has been changed so it is always calculated based on the thursday in that week according to international rules.

CR1001109: Fixed double service call container at incoming call [bug]

Fixed double service call container at incoming call after expanding and minimizing

CR1001107: Search records within related list [feature request]

You can now search for records within a related list: a search field is available in the related list panel and in the "view all" list

CR1001008: new price determination logic [feature request]

new price determination logic is added to the sales docs in SpiceCRM. At this time this is on request only and has no UI to maintain the pricing schemas etc. This will be extended in the future to enable flexible pricing in the CPQ Scenarios.

CR1001124: Workflow Monitor [feature request]

Replaced the workflow list view with the new monitor view. The new view renders a set of configurable charts which provides an overview of the system workflows by status and other parameters. Besides a table list is rendered which respects the selected point on the chart.

CR1001101: Richtext field content was truncated in display view [bug]

When the field content is not HTML but plain text (as an example from a plain text e-mail) the text would be displayed in 1 one and tehrefore truncated. We now pass the field-generic-display-notruncate input parameter so that slsd-nowarp class is not applied for the fieldRichText display.

CR1001089: Module filter: added "not equal", "not equal current user", "equals current user" operator for relate field value [feature request]

Typically used in a module filter with scope "created by me" but not assigned to me. Make sure your indexed user fields in use (assigned_user_id, created_by)

CR1001079: Task Manager view: participants of an task edited task will be set in the next task you edit [bug]

Participants are now correctly displayed and will not be passed from one task to the next

CR1001164: Sync to outlook button: dynamic route depending on selected groupware (MS Exchange or MS 365) [change request]

Having MS Exchange or MSGraph synchronization in use, a CRM user may decide to synchronize contacts from the CRM. By clicking on the "+ outlook" button, the user will trigger a synchronization between the CRM and their MS Groupware application. We added the trigger to Microsoft 365 (MSGraph API).

Breaking changes

CR1001080

The configuration variable developerMode no londer exists. Use stack_trace_errors instead.

CR1001130

The backend function "loadRecent()" has been modified. Please delete the entry with the method "SpiceCRM\modules\Trackers\api\controllers\TrackersController->loadRecent" from the table "sysuiloadtaskitems".

CR1001095

All Campaign Tasks type Email which expect the email to be saved must set the field save_emails to 1.
All Campaign Tasks type Email will not send an email when one of the following conditions match:
Recipient has is_inactive == 1 means true
Recipient has gdpr_marketing_agreement == 'r' means refused
Recipient has an opted out primary email address
To ignore this checks the new disable flags must be activated disable_inactive_check, disable_opt_out_check, disable_marketing_agreement_check

CR1001146

Non -db field activity_status_date_modified in Contacts and Users is no longer available. Customize your instance if you need them.

CR1001131

In case you have any customization, please note that the components EventRegistrationButton, EventRegistrationModal, EventRegistrationModalType and EventWithCampaignActivateButton are now to be found under ModuleEvents and no longer ModuleCampaigns. Please, modify your layout configurations accordingly.

Deprecation

Questions about this version? Write to us.

This is not a cookie banner.Read more