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.
Questions about this version? Write to us.