Exciting News! The highly anticipated SpiceCRM version 2024.01.001 has arrived!
Managing custom modules and fields is now a breeze—no coding required! Our new dictionary manager lets you handle everything effortlessly. Plus, our revamped interface makes system upgrades smoother than ever. Sit back, relax, and enjoy this seamless experience with SpiceCRM.
Dictionary Manager for integrators
- create custom modules and field definitions without a code line
- administrate dropdown lists
- load feature packages and use them right away
- cache layout changes and check the results as you are configuring the views
- turn on upgrade mode automatically
- revive system automatically after an expected system error
Charts visualization in lists with flexible display options
Our charts now automatically render results based on predefined aggregates, making data visualization effortless. For instance, sales users can instantly see the highest value of their open deals or sum amounts by sales stage in “My Opportunities.” No report creation needed—the information is always accurate and readily available in the list. Metrics include count, sum, highest value, lowest value, and average.
Text Snippets
Enhance the quality of your business emails and save time with custom text snippets. Whether crafting an offer or handling customer service, easily combine these snippets with existing templates. In just a few clicks, add the perfect text block to meet your writing needs.
Release Details 2024.01.001
This is a temporary measure til all changes can be caught properly in the component DictionaryManagerItemDetails.
Depending on the php version in use and the system configuration loading the exchange REST extension would cause a fatal error. Fix added.
We added a warning message and removed the default check on the checkbox in the drop item functionality. This feature might cause data loss if not used wisely
We added a title on mouse over for the icons located at the top right of the tab fields in the dictionary manager, making it easier to understand the display.
Restricted the oauth2 login popup window listener to accept only same source and origin.
When my user session is experied I cannot re-login when my user is setup with 1-time-password authentication. Wether my password nor a new code picked from the google authenticator plugin is accepted. The login screen displayed on session expired seems not to consider the 2-Factor authentication capability.
We announced the removal of the module Qualifications for release 2023.02.001. It looks like we just forgot to remove it. It now happenned in 2024.01.001
A popup selection modal will appear to the user on login to select one of the available 2fa methods.
Added "remember device" option to the login screen to allow the user to decide if the system should remember the device or not.
Added 2fa check on password change.
Improved the login code to use the modal service for modals and load the required labels to the language service.
$spice_config['SpiceCRMExchange']['log_inbound_records'] = 1;
$spice_config['SpiceCRMExchange']['log_outbound_records'] = 0;
Both 0 per default.
When you select "Cron Expression" to schedule the job we shall be able to enter a cron expression. All 5 fields appear in the display, you enter you cron expression but after clicking save the cron expression is stilll * * * * * . The changes are simply not sent to the save logic. We corrected that.
SLDS has been updated to the latest Version (2.23.0 Spring 24)
fixed dashboards not loading after closing tab
the API key in the Google API admin section has been split into one key for Google Maps and one for Geocoding,, DIrections and Places API. This allows to restrict different key based on different rules.
We extended the Human Capital Management package with 3 new modules to structure employee objectives, define a commitment for a specific time frame and relate to the strategic goals of your company that can now be stored under the company code.
This can link to another table ot a module by defining the config as follows:
{
"name": "salesdoctype",
"type": "foreign",
"foreign": {
"dictionary": "syssalesdoctypes",
"value": "name",
"display": "name"
}
}
or for a module as follows:
{
"name": "outputtemplate_id",
"type": "foreign",
"foreign": {
"module": "OutputTemplates"
}
}
Built query for the lyytd "last year to date" time frame was not considering a leap year..
API Route to get MediaFiles for internal use in the CRM
This button is deprecated and was removed in 2024.01.001
Necessary for reporting purpose. As in ServiceTickets and in ServiceCalls sysservicecategory_id* fields are now defined as category in ServiceTicketStages.
overwrite old FTS config that is not supported anymore
Cleanup Imap Handler fetch removed unused imap_mailboxmsginfo reduced the fetch process time.
The test button in IMAP is now matching other email handlers
added check for maximal attachments size allowed by mailbox
Post deployment action: tested in ÖAMTC
Added label support for existing reports before 2023.03.001 so that display contains the default label for the field.
A new m-2-m relationship & link between Opportunities & Products.
Post deployment action: Be aware of the new link in case you've got customizations and load the "productmanagement" package after updat. You might need to adapt your configurations and/or code.
a new system component was added to enable selection of a defined module filter
Fixed bug: SpiceLogger trying to log to the syslogs table creates a infinite recursion which leads to fatal error.
Query to nsert records into the table spiceaclusers_hash ended malformed when no users were passed as input parameter. The function now returns an empty string when the input parameter is empty.
left + right
fieldset schall be definable in left hand side
right hand side = current detail view of Mailbox
ServiceTickets are now correctly closing with SLA reason
showaddbutton: if set, a button "new" is shown within the buttongroup in the footer of the modal, that allows to create a new entry of the type the modal (-model) is based on
We added the ExchangeUtils::checkOnSyncEnabled() function to skip the logic when so sync is possible.
It is now possible to search for a mailinglist by entering a search term
mailbox footer is now displayed correctly
The "more" link was only displayed when results were returned. Since a click on the "more" link extends the time frame for the search it would make sense to display it also when no records are found. That is the change we made.
Added the mention ck-editor feature to the spice richtext editor to enable mentioning persons in text content.
$arguments['relationship_data'] in after_relationship_hook now contains the data row inserted/updated of the join table.
MSGraph IDs and EWS IDs are case sensitive. Make a proper case sensitive query when retrieving a bean by external_id. Manual select is necessary.
In the SpiceGDPRManagerController we added a new parameter "include_deleted" which helps us to retrieve Beans depending on GDPR settings (i.e. retrieve deleted Beans).
Added a new workflow task type "conditional decision" to enable the system to decided the next task(s) to execute based on the matched conditions.
Create a module filter with the condition "changed"/"geändert" for a specific field.
Only in case this field has been changed since loading the bean, the bean will get filtered/taken.
This feature is commonly used with non-scheduled workflows.
General it is advised to use this carefully as this has also a performance impact on the elastic search.
Select an output template for the pdf export in Reporter MORE version. PDF export is now available in a simple version. A config variable to define the pdfhandler can be set in the workbench to render with the PDF service or with the default SpiceCRM PDF Handler
We added the optional module filter "Active Users" to the assigned user search. The filter is now part of the default configuration for administration tab.
added relatedmodels.model to relatedlistall to allow correct rendering od sendgrid toggle button in a listview
- logical OR operator: individual searchterms can be combined with an OR clause. So a searchterm 'spice OR crm' will return all entries that mactch the term 'spice' or the term 'crm'
- exclusion of searchterms: if a searchterm is preceeded with a '-' that searchterm will be excluded. So a searchterm 'spice -crm' will return all records that match the term 'spice' but do not match the term 'crm'
- specific term: searchterms enclosed in double quotes will be treated as term that needs to be matched exact. A searchterm '"spicecrm"' will match all records that match the term 'spicecrm" exact in one of the searched fields.
- specific terms and wildcard: fro specific termas also wildcards can be used. A seacrhterm '"spicecrm*"' will return all records that match fields that are beginning with 'spicecrm'. Wildcards can be entered anywhere in the searchterm. So also searchterms like "*spice*crm*" will work matching all records that first match 'spice' and then 'crm' in a searchfield
- exclude specific terms: if a term in double quotes is preceeded by a '-' it is treated as not matched. So a searchterm 'spice' -"*crm"' will return records that match 'spice' and do NOT end with 'crm' as this searchterm was wildcarded
- search in specific fields: also for the search a searchterm can be set to just search specific fields if a searchterm is preceeded with the fieldname. So the searchterm 'meyer email:"*gmail.com"' will return all records that macth the term 'meyer' and have an email address ending with 'gmail.com' Also for the fieldnames the same logic for exact match and wildcard match of terms as well as exclusions applies. E.g. a search for 'meyer -email:gmail' will return all record matching the term meyer but not matching the term gmail in the email address. The matching of applicable fields is done by mathcing the fieldname in the searchstring with the searchfields available. If there is at least a partial match the field filter will be applied. So. e.g. 'phone:(867)' will return all records where any phone field matches the specified searchterm.
Post deployment action: For full functioning searchlogic Indices need to be recreated and reindexed.
A scheduled report would be sent from the default mailbox defined in SpiceCRM. Now it is possible to allocate a mailbox to a schedule report so that the report is sent via the specified mailbox.
We removed the reponse type for getSubscriptionData() for now. It returns a boolean or an array and not null or an array. Response type boolean|array not possible under php7.4. Therefore removed.
the components ObjectActionNewButton, ObjectActionNewrelatedButton and GlobalNavigationMenuItemActionNew have been amended and a new parameter has been added to create the record in a new tab rather than in a modal view. Default Actionsets have also been crated and can thus be configured on a module basis on the global action menu, the list view and the related panels. This is to enhance the user experience when creating more complex new records like e.g. Opportunities or Leads.
in the API Log viewer now a start and end date can be optionally selected. This allows with larger datasets to better hit the requested record and also lower selection times
The user panel has been changed so in the global view the link to the profile is removed and the settings for signature as well as 2FA is moved to the global user panel. The link to the user details is removed and placed on the username . These are the first steps to remove the direct user access for regular (non-admin) users.
added new fieldtypes and also a details modal for larger records so they can be better edited.
new Fields for the value types Number, Float and Int have been added to the reporter rendering the number format properly to the users settings.
Post deployment action: reload package Reporting
fixed attachments not shown in activity panel sent email
added a new option to the UI roles to define the applicability of a role. This allows to define roles that can be used only for external people or people within the organisation or to all.
This feature is (for now) dedicated only to developers. So there is no possibility to turn on the feature in the frontend.
To use the feature:
In the mailbox record of the DB insert "no_status_callbacks":true into the json field "settings".
What will happen?
When commiting a Text Message to Twilio, no Callback URL will be communicated to Twilio and the field "delivery_status" of the Text Message Record will set to "sent" instead "queued".
The Event is automatically set to before_relationship_add as first choise. "select" is no longer of use in the event drop down.
When a scheduled report is sent via e-mail the generated file has an automated name that doesn't tell much about the content. Example: kreport_2024-02-08_09-05-02.csv. You can now use the fiedld "Save to" to define a prefix for the file name and get something like NPS_Data_ServiceTickets_weekly_kreport_2024-02-08_09-05-02;
it is now possible to manage rights to delete Spiceattachments that were not created by the user
Added pre activate necessary checks on campaign task types
Post deployment action: set the new field is_generated_by_system to 1 for auto generate inclusion and exclusion lists.
A new functionality was added: "Accepting Bean as Duplicate". Sometimes, Elasticsearch suggests Beans as duplicates, which in the reality are not duplicates. These Beans can now be "accepted as duplicates" with a new button "ObjectActionCheckDuplicateButton".
When a duplicate Bean is "accepted", the button turns green and the Bean is not shown in the merge modal.
In the panel, the duplicates can be filtered by their status "accepted", "found" or "all".
As part of this enhancements, we added the possibility to display buttons in list item actionsets.
Added new field sepa_id, sepa_valid_from, sepa_valid_to and a link to company codes to the module AccountBankAccounts.
Sometimes it's necessary to highlight an item in the list, dashlet or in a kanban tile. An example of such use could be highlighting a Call which has the status "Not Held" and "date_start" is in the past. For this kind of scenarios you can now define specific conditions and set them up with the new action "set_model_alert" in the validation rules manager.
removed deprecated KReportCategoriesController
We now check the record deleted flag in the CRM befire you run save. If the record is deeted, we just write a log.
When edit an event directyl in the calendar, save the change and then edit again the same event, the display would not show the latest values changed but the original event data. Now corrected
When you have an opportunity with potentials and some amounts already set in them for that opportunity, the potential amount would be set to 0 on opportunity change like sales stage change or any other change that does not include a change in one of the potentials. Fix implemented.
Changed modal wrapper to use the static method loaded.
Campaign Target Lists Manager: include all list types except system generated.
Calendar bug fix: when tab is inactive and an event is visible in the calendar has been saved in other tab and the next active tab was not calendar, then the events are displayed in a wrong position.
Campaign: Add Task: added save and go to button.
System Filter Builder: Duplicate operator lastndays cleanup
Related card footer: Pages total count fixed
Attachments Panel bug fix reload attachments after upload image does not work
Added the required PWA (Progressive Web App) Files to enable the PWA installability as a standalone app on several operating systems supported by most browsers.
Clone Tab (maintabs only)
Close Tab
Close Other Tabs
Close Tabs To The Left
Close Tabs To The Right
Move to Main Tabs (subtabs only)
If there are no other tabs or tabs to the right/ left, the option should be disabled.
if the tabs are pinned, they will not be closed
Also possible on subtabs.
The relationship between CampainLog and ServiceFeedbacks was missing and is need in the template. The questionnaire field was not displayed and is necessary to create a proper service feedback. The function CampaignTask::genereateServiceFeedbacks() was renamed to CampaignTask::generateServiceFeedbacks()
made sure the selected files is an array
Cron: prevent run jobs in recovery or maintenance mode
Added a new button to the richtext and html editors to enable inserting a predefined text snippet.
Changed the workflow monitor list sort direction from ascending to descending.
Tested with Red Cross Styria.
New requirement php extension bcmath added to the CRM installation.
refactoring of property duplicate_merge on field level to boolean only (used to be disabled/enabled); same property is now available on link fields: Related entries to a merged record will be linked to the record that is kept / remains active. => implemented in CR1000882
Measurements:
The vardefs for these fields have been deleted.
The dictionary definitions have been deleted
Added new field external_id to keep track of the email status on the campaign log entry.
fixed undefined error for maxupload, zip and read_receipt
Lots of interface improvements for a better usability. The Dictionary Manager is from now on the tool to use for variable customizations.
fixed files not shown when loaded from forwarded email
a new admin configurator type filter has been added to allow selection of a module filter in the config settings
the VIES check to validate European VAT IDs against the services from the EU has beenslightls enhanced. Also logging is now available. Just enable logging on the route "/vies/*" in the API log config and the requests towards the VIES service will be logged.
We added an indicator to make the inactive setting visible. The system automatically looks up for a field of type "is_inactive" (domain is_inactive) and renders the indicator without any additional necessary configuration.
In the SpiceCRM core a user having edit right is able to click the indicator in order to deactivate a record. An alert makes the user aware of the responsibility of this action. Only users with edit rights can activate and deacticate the record.
In the list view filter capability under "display all" we also added three new checkboxes:
- "active" = which allows to display only active records
- "Inactive" = which allows to display only inactive records
- "active & inactive" = which allows to display both active & inactive records
These checkboxes are be combined with the already existing checkboxes "all", "own" & "created by me".
2. If you have a global filter defined in the FTS, which filters inactive records out, please remove it. You don't need it anymore.
3. Reset and reindex these Beans.
*sysmodulelists*
If you have any entries in the sysmodulelists table, add the following string "groupstate":"active" after groupscope into the fielterdefs field. Your entry should i.e. look like "logicaloperator":"and","groupscope":"creator","groupstate":"active","conditions":[]
The field parameters (technical name sysparams) was not interpreted in the System Handler logic (SystemHandler) and therefore of no use in the custom action method. Now parameters are read and passed to the custom action method as second argument,
adding the Spice Calculator being available as dashlet and as option in the currency field. it is also per default at this time enabled in the opportunity amount field
in the aggregate search an additional option has been added to display the search result graphically as a chart. The user can choose and also set the chart type. Additionally the settings are also saved in the preferences. So the next time the user returns the aggregates are also as they have been before.
the reminder and notification buttons in the page header are removed and are placed as icons with click function in the page header next to the module name. The functionality remains as is and it not changed
it is now possible to configure opening contact details in call when contact is found
The source ID in the campaignlog is currently used by the campaigntask of type "event with campaign". In some cases we might need to store the event ID as source ID when the parent campaign is of type "event".
We also added some debug lines in MSGraphHandler::graphItemExists.
Improved screen for better useability; update is now possible
the App Launcher Dialog has been slightly modified. Module names are not up to two lines long allowing better visibility of the module name. Padding is slightly enhanced and the app Launcher Button is removed.
Added the possibility to export specific packages in the config transfer. Also added the input field for file name.
Adjusted Spice Importer to handle big files processing for a SpiceCRM system which uses an external stream for the upload folder e.g. google cloud storage.
Added "SUBSTRING" database function to DBManager::convert
SpiceBeanHandler: return relationship join table record id, if the bean was retrieved by a relationship link.
Email: bug fix: duplicated recipient addresses after (save on editing) email address
Compiler: prevent trying to misparse quoted string in spiceif
- the user details now open after the mouse is moved over the user image and also closes when the user leaves the area. No need to click any longer
- the "clear & reload" button is moved into the upper bar as little icon accompanied next to the workbench icon. Both icon buttons are only displayed for the admin user.
- the reload and workbench buttons were removed from the standard global header actions
- minor changes to some global header actions so the cursor is rendered as pointer to indicate that the item can be clicked
fixed bug: update participants event on microsoft 365 calendar does not trigger on changing a participant status.
fix has been applied to render a date picker and date fields on the operator equals and not equals in reporter filter for fields of type date and datetime
It is now possible to configure the mailbox so that the users may send a read receipt when they send an e-mail. Currently only available for IMAP milboxes.
The ability to force the EmailTemplates to reload each time the EmailTemplates field is displayed.
Upgraded angular to version 17
the soap endpoint is amended so the style parameter is interpreted properly. The WSDL can be generated by the URL api/soap?wsdl and allows the additional request parameter &style=rpc or &style=document to generate the WSDL in either RPC or document style. By default the style is rpc if not otherwise specified
fixed searching only within displayed records
Implication is a required PHP Version 8.0 from release 2024.01 on
Breaking changes
default Mailbox upload size set to 26214400 Bytes, check and correct after update if Mailbox have lower or higher limit
REPLACE INTO `sysuimodelvalidations` (`id`, `name`, `module`, `onevents`, `active`, `logicoperator`, `priority`, `deleted`) VALUES ('8fac0367-599c-018e-511f-0053810071ea', 'Require sladeviation reason ', 'ServiceTickets', 'initialize,change', 1, 'and', 0, 0);
REPLACE INTO `sysuimodelvalidationconditions` (`id`, `sysuimodelvalidation_id`, `fieldname`, `comparator`, `valuations`, `onchange`, `deleted`) VALUES ('07a2857c-cc7e-20af-693c-6e52d6d8e46d', '8fac0367-599c-018e-511f-0053810071ea', 'sladeviation_reason', 'empty', '', 0, 0);
REPLACE INTO `sysuimodelvalidationactions` (`id`, `sysuimodelvalidation_id`, `fieldname`, `action`, `params`, `priority`, `deleted`) VALUES ('1d06d1a0-505f-e0c1-4894-d4c1ccab297d', '8fac0367-599c-018e-511f-0053810071ea', 'sladeviation_reason', 'set_stati', '"invalid":true', 0, 0);
the legacy wildcard search is deprecated. Wildcards now can be used in term specific queries.
check subqueries in KReporter and replace the $ with a reference for {t}
Check manually before you make a SpiceCRM upgrade. The check is only implemented in the installation process.
Set the field value is_inactive = 0 on all Beans, where is_inactive = null. Will be the case for all beans extending Company, Person, and also for OutputTemplates, EmailTemplates
You will have to set the new value during repair process for the folowwing modules, depending on the packages you have:
Accounts, Contacts, Consumers, Prospects, Leads, Employees, HCMJobApplicants, OutputTemplates, EmailTemplates
For developers: Node version must be at least v18.13.0
From 2024.01.001 on php 8.0 is a requirement
Deprecation
the alias $ that was able to be used to reference the current table in a subquery in KReporter is deprecated and removed. This symbol is used to allow JSON functions and thus cannot be used in formulas any longer
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.
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.
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
Too precise check on the content array which would cause an upload cancellation
Product name would not appear in salesdoc item
Country name was not rendered properly
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
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');
The application would die after clicking a recent view item from the global search bar
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.
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
It is no longer necessary to also specify a dummy SystemAction when using a custom SystemAction.
disabled active logged in with microsoft if user is not the current user
extended navigation with keyboard in telephonysearchmodal
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.
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)
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.
Fixed bug page builder section drop not possible when the content height is bigger than the page height.
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
Fixed bug: Page builder cannot parse html element content with single quotes.
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
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
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.
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.
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.
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
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"
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.
Post deployment action: reload core package
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?
it is now possible to select/deselect all files when changing files from record
Bug fixed: Email addresses field when clearing the address and retyping, the existing email address is overwritten.
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.
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.
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.
the condition for email-subjects encoding was using custom code for detection
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
added a button add from record in spiceattachments panel, now a file from a record can be attached to email without downloading the file
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
Added new date operators "in the last n days" and "n days ago" to the reporter filter.
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.
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
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.
The Service WebSMS does not accept mobile numbers containing other characters than digits (except "+" at first position). So strip those characters before send.
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
Added new System components SystemChartMultiDimensional and SystemChartOneDimensional to display a one/multi dimensional google chart.
Added new method rollbackRemovedRelatedRecords to rollback the marked to remove related records from the link_name.beans_relations_to_delete object.
Implemented in fieldRelate and also fieldLinked.
Text from label "LBL_RECORD_WITHOUT_NAME" is shown.
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.
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.
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.
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".
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.
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.
Added a new param "bodyContentOnly" to the template compiler to return only the content of the body element.
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.
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.
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) .
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.
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
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.
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.
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.
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
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
added prompt on delete of role, layout changed for better display
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.
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
By outgoing emails fixed the bug: corrupted content added xml tag to the beginning of the emails instead of html.
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.
Refactored "filtercontextbeanid" to "filtercontext" to accept an object of module data (module?: string, id?: string, data: object)
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.
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.
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
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.
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.
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.
Added new configuration parameters icononly, iconname and inputurl to field type fieldurl
Post deployment action: reload core package
Added a new template function for the mailbox footer to enable generating a trackable marketing unsubscribe link.
Post deployment action: Reload email handling package
Taking the DELETE button as an example: the DELETE button has the noredirectoncomplete property. This property is now visible in the actionset manager.
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.
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');
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.
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.
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
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.
Assigning a user is now possible via assign button.
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.
Added new system component "SystemInputCronExpression" that accepts a cron expression string and enable a user friendly setting for the expression values.
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.
Create a custom view that allows for easy navigation of training courses and their individual chapters
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.
added webhooks to the hooks manager interface
.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.
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.
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
Adjusted address referencing logic to update the parent id field for the referenced children on merge
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]
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.
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.
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".
added loading of default graph config
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
added option "truncate" to fieldhtml, if set takes the html as as and adds a class specific for truncating markup
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:
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
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.
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.
Moved components: EventRegistrationButton, EventRegistrationModal, EventRegistrationModalList, EventRegistrationModalType, EventWithCampaignActivateButton
Post deployment action: reload campaign management and event management pakages if in use
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()"
Use of ServiceTickets in SpiceCRM is now settled.
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.
Fixed double service call container at incoming call after expanding and minimizing
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
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.
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.
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.
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)
Participants are now correctly displayed and will not be passed from one task to the next
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
The configuration variable developerMode no londer exists. Use stack_trace_errors instead.
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".
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
Non -db field activity_status_date_modified in Contacts and Users is no longer available. Customize your instance if you need them.
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
SpiceCRM now features a group of modules to manage staff administration requirements such as skills, follow-up on employee vocational training and the monitoring of employee needs such as vacation, sick leave, hiring and more.
Human capital management
In version 2023.01.001 we introduced some employee management features. We redesigned the employee layout to administrate vocational education, career measurements and hence get a 360° view of the employee. Activities can be logged and access to employee information is restricted solely to the granted and authorized users.
The Human Capital Management package also contains configurations to manage the employee hiring process. For bigger companies it could be interesting to prepare job offers in the CRM, publish them to a landing page and gather the job applications. To facilitate the selection process it is now possible to prepare a questionnaire that can be utilized during the interview. It will also be possible to compare , in this way , the hiring criteria and this will in turn guide the decision regarding the best candidate for the job.
Segmentation of accounts by main activity
The NACE/SIC Codes loader makes it possible in a few clicks and some configuration to make use of international company activity classification in SpiceCRM. Both NACE and SIC standards are available in English and German. The classification shall help marketers to segment accounts by their main activity and achieve more efficiency in campaigns based on companies’ main activity.
Whitelisting for developers & testers
Some good news for those who have been running e-mail or sms campaigns: we introduced a whitelisting functionality to enable the use of test e-mail addresses or mobile phone numbers on test environments. Just add the authorized e-mail addresses / mobile phone numbers to the whitelist field meant for this purpose in the mailbox configuration. Only the selected recipients addresses / phone numbers will receive the mass e-mail/text message sent. This is a handy way to test a marketing campaign.
Release Details 2023.02.001
Entered value in fields of type float or currency would be rounded down depending on their length the the kind of digits entered after decimal. As an example entering 2082.22 would result in 2082.19. This was due to the use of Math.floor when converting the entered value to a number. We now only use parseFloat().
Content of the folder has been deprecated since 2022.02.001. Folder is now removed.
Added new function which sets the current language either from the syslangs table or from the user object preferences.
The fields date_entered and date_modified are now part of the table voipcalls. It makes it easier to look for specific calls registered in the table.
Added a new flag international email addresses to workbench/General Settings/Advanced Settings to enable/disable using international email addresses RFC 6530. Added domain check on email address on save and in the frontend field email addresses. Invalid emails will immediately get the flag invalid_email on save.
Whem an e-mail is imported to the CRM via drag&drop the assigned user of the e-mail shall be the current user
Interpretation of mailbox settings had to be reviewed
Print a book using an output template is now possible
Added new GET API /module/{beanName}/find to find a bean entry by the provided retrieve fields values. The request query params must include the param retrieveFields as an object with the field name and value as key value of the object.
added a new fieldtype for statusNetworks. This allows to set model status based on allowed status changes also in a view or list.
In 2022.03.001 we added a function that would push CRM changes in an event to Exchange only if mapped fields were changed. In complexe customizations that method might not detect changes. This is why we added the configuration variable SpiceCRMExchange.alwayPushUpdateToEWS. When it is set and true the change detection will not be performed and the CRM calendar event will be pushed to Exchange each time the use pushes the save button.
Added the functionality to track marketing emails clicks and tracking pixels.
Workbench/Email Tracking:
tracking_pixel_url http://localhost/crm/api/email/o/
tracking_clicks_url http://localhost/crm/api/email/t/
blowfishkey 2fs5uhnjcnpxcpg9
Worbench/Mailboxes:
track mailbox check to activate the tracking pixel for openness status
On service ticket save a record of serviceticketstage is created when any change in mapped fields was made. It used to save only the changes values. Now it saves all the values at the time the change of onyl 1 value. We add an entry on serviceticket creation so that all steps can be followed in the history panel.
Post deployment action: reload Service package
It is now possible to add a long description to the label in use so that some explanations can be displayed on mouseover.
Depending on the length of messages the API response contains a further link to retrieve more "pages". This link wasn't passed properly in our logic. Now corrected.
In addition, an extensive revision of the modules is necessary, including some bug fixes.
When you migrate from Exchange on Premise to Microsoft 365 you might need to run the calendar synchronization with EWS or MSGraph deopending on the user. Until a user's mailbox is migrated to 365, they will synchronize using EWS. When a user accepts an invitation in the CRM, their partipation status can be sent to 365 but not to EWS. The logic now catches properly if MSGraph synchronization for 365 can be triggered.
the email status indicator in the activity stream item has been updated to visualize also if an email was outbound or inbound.
Added edit button on section hover to modify its attributes
Old ['curl_options'][81] to verify_ssl
Old ['curl_options'][64] to verify_peer
Old ['PushSubscriptionRequest']['StatusFrequency'] to PushSubscriptionRequestStatusFrequency
It is now possible to disbale the lookup stored recent items and searched items. Parameters: disablerecent and disablesearch can be set in the field confguration. Might be handy when you want to force the user to open the the full list of related items
REPLACE INTO `sysuiobjectrepository` (`id`, `object`, `module`, `path`, `component`, `deprecated`, `description`, `componentconfig`, `version`, `package`) VALUES ('ca70633c-d1a3-4de1-9dbb-f49b997a8c71', 'fieldRelate', 'cf986fbd-7ee6-4733-af7d-a2867126334c', NULL, 'fieldRelate', 0, NULL, ',"executeCopyRules":,"modulefilter":,"disableadd":,"disablerecent":,"disablesearch":,"displayicon":,"promptondelete":,"relatefilterfield":,"relatefilterrelationship":,"relatedfilterrequired":}', '2018.02.001', 'core');
the behaviour for creating new salesdocs has been changed. This is no longer rendered in a modal but in a separate tab. As a salesdoc is more of a complex object that might also take some time to be created this makes more sense from a usability point of view to handle it this way and thus increase the user experience.
Added link between the Consumers module and the ContactsOnlineProfiles module. Added Online Profiles panel under consumers related tab.
all the colours that are changed are now saved. Added a reset button to return to original values
added filtering and sorting options to the logger panel for the scheduler job/task logger panel.
Post deployment action: Filtering for dates is there, I hope that is what was changed
Wrong class Handler name in use in Calls & Meetings
It is now possible to set Calendar.groupwareDisabled in the Calendar compoment in order to prevent the user to display nonsynchronized events from his groupware calendar
The workflow manager offers much flexibility designing a worflow. We tried to improve its usability by adding help texts to some areas of the manager.
Use case: When the space inside the standard info icon is too small for the help text.
Upgraded angular to version16 which has some security and performance improvements
It was no longer possible to save report categories in the workbench due to wrong dictionary definition for metadata table kreportcategories.
You will need to load the hcm package for testing
added the bean CampaignLog to the handler for sending emails fro a campaigntask. With {CampaignLog.xxxx} all attributes and also links from the CampaignLog are accessible in the email template compiler.
Enabled toggle expand for the home component and the assistant
Enabled toggle display the dashboard panel in the dashboards editor.
It is now possible to select a default dashboard or a default dashboard set via dropdown instead of copy/pasting the correspondig id
Solution: A new property was added "cancelPendingRequests" which is per default true. It can be called in your component with modellist.cancelPendingRequests and set as you require. This way you are more flexible when developing new components.
When a value is already selected xou can delete it bei double clicking on the value. After double click the value is removed and the focus is set into the search field. Since focus is triggered, the dropdown should appear.
Improved the layout details view layout for the modules CompaignTasks, EmailTemplates, OutputTemplates and LandingPages to make editing templates easier.
That should ease the use of that method which has been retrieving data wih htmlentities on special chars like ", and '
Display a no Data Illustration in relate container if no configured component set is found
added tabdata to the navigationtab service so a tab can keep its own state and data. This enables e.g. in the admin tabs if tabs are opened and the browser is reloaded that the admin tabs keep their loaded adminactions. For developers this means that in a tab the property tabdata can be read and written and can store data for the tab on its state and data that is also cached in the browser session.
When you close a ticket and the SLA time is over a modal window pops up. You are asked to enter an explanation why the SLA was overtimed. We added an explanation text and a warning icon in the modal window display. The explanation itself is store in the ticket in the field deviation_reason.
The logic considers the old names in case you forget adapt your settings after the SpiceCRM update.
In a tree (component fieldcategories) you can use the icon X to remove the value currently set. Now you can double click on the value to remove it and open the tree to select a new value.
With 365 synchronized events shall not appear as 365 event in the CRM calendar when the users open their calendar.
Hit the button to have only custom tables selected (= table name contains the word custom).
The listener on escape key wasn't terminated and caused performance issues with other fields. Working for a while with records using this type of field would result in delayed typed characters in any other input field.
custom lists created in Accounts are now saved and displayed without logging out
created an option to have multienum values sorted alphabetically
VAT check in accounts is returning correct message
tag so that texts remain readable.
added a delay when selecting aggregates so multiple items of one aggregate can be selected or deselected before a reload of a list happens. This increases usability as a user can click multiple items and then the list waits for 1second until no further changes happens and then reloads
Problem when sending emails the email styles tags were misinterpreted. Fix covers all the mailboxes
the full_name fields is now displayed iwith format from user preferences
Information about changes made in custom translations will be pushed to the new warnings section added to the response of a language package load.
Possibility to restrict email sending to a whitelist when sending emails in a test environment.
Added the option to include comments for the template compiler to generate the template comments with the compiled content. Important for conditional comments for IE html compatibility.
amended the logic of the address field so so empty segments with commas separated are removed in the displayed value.
added a loader component in the workbench that allows loading files for industry SIC/NACE codes and use them in accounts for the industry classification following industry standards. A text file needs to be pasted and the user can select the levels of depth to be imported. The files used are also in the repository in folder /api/modules/Accounts/siccodefiles. The imported files will generate a select tree that then can be assigned to the accounts sic_code fields.
The change queue button in a service ticket triggers the opening of a modal window in which you can select a service queue. Until now a full list was displayed without any search capability. Now the usual list with search capability is displayed. Only 1 queue can be selected as it used to be.
Created StreamFactory to handle getting the path prefix of a stream.
Created new table sysdatastreams to hold the system stream wrapper definitions. Moved the legacy cdn to a new stream CDNStream.
Created GoogleCloudStorageStream.
SpiceBean class has athe property _bean_action which makes it possible to know if we are in a creation or an update. The property was reset before calling the after_save logic hooks preventing us to know in such a hook which action was triggered. We moved the unset at the end of the save function().
fixed the new namespace used by the European Union for the VIES VAT ID Check so it it properly checked again.
Added a new RSS feed element to the page builder to enable parsing from an RSS feed url.
added a new parameter systemUpdate to the SpiceBEAN Class. If set to true before saving this will trigger a forced update on the changed bean on the client if the socket service is active and bypass the session check. Intention is to be able to force updates from Objects to the frontend if that happens systematically (e.g. if one bean updates another one and should communicate this to the frontend)
The module itself and its related layout configurations were removed from SpiceCRM.
Post deployment action: DROP TABLE qualifications;
"upgrade view" in a "display as" drop-down list
as part of the stream factoryChanges also the statistics have been updated adding specific call on the StreamHandler class to get stats. If the calss implements this can be handled special ways to optimize performance. Specifically with 3S buckets like on AWS or GCP this implements specific API calls to improve stats performance significantly
Cleaned up the Record view of the company codes. Removing the activities tab and the header details line in the page header.
Saved selected view type component to user preferences so that the system will remember the selection after re-login.
When using a mailbox with MSGraph Handler e-mail status wouldn't be set to "sent" even if e-mail was sent successfully. The response is now properly interpreted and returned.
The default reports listview can now be sorted by name and date modified. You can also see the base module selected for the report and the allocated category.
the View Layout for products has been cleaned up. Into a 1 only view with the tabs. The details on the header has been removed as this is not really needed here. The tab with attachments is moved into the main tabs and the notes tab has been removed.
It is now possible to specify a css class for the display in a fieldset
Removed the call of html_entity_decode in SpiceBeanHandler::mapBeanToArray to prevent decoding any html entities before returning a response.
amend the Aggregates view. By default only 5 items are shown. If more items are available a more link with the number of more items will be shown and the aggregate panel can be expanded. This allows also to have aggregates with more items loaded and still be able to limit scrolling.
Changed the reports designer filter name to display an editable label of the field, solving any naming conflict in the reporter filter panel.
Only user themselves have been able to turn on/off their 365 subscriptions. Now an admin user can do it for the users
Improved listing for requirements checks to make the difference between PHP version check, php extensions checks and directory access permission checks.
Added table systcustomstatusnetworks. Domain setup in this custom table will prevail over the core table, The domain status network definition is retrieved either from the custom table or from the core table. If you need to customize 1 button, you will have to copy the whole thing to custom and adapt the proper record.
We added a fix to avoid that behaviour by sending the time zone set for the user in the CRM.
Adjusted the layout of the system slider component to show the incomplete part of the slider in grey color.
The logic to get a document number is now packed in the function "getSalesDocNumber" in the SalesDoc class. This way you can customize it by extending the class and overwriting the function.
When the flag active is set the validation rule is applicable. When the flag isn't set the validation rule shall be ignored. This behaviour has been corrected.
The dashlet configuration displays the correspondig checkbox.
Of course it possible to use the resolvelinks parameter in any other API call for a list.
Breaking changes
UploadStream refactor under api\custom if used:
Class SpiceCRM\includes\UploadStream moved to SpiceCRM\includes\DataStreams\wrappers\UploadStream
"upload://" dir prefix under api\custom if used:
Replace hard coded "upload://" with SpiceCRM\includes\DataStreams\StreamFactory::getPathPrefix('upload')
In order to use the legacy cdn create a Stream in the workbench with the following fields:
name: cdn
class_namespace: SpiceCRM\includes\DataStreams\wrappers\CDNStream
config:
Use StreamFactory::getPathPrefix("upload") instead of directly using the hard coded string "upload://" in file_put_contents.
Deprecation
As announced in release 2023.01.001 the menu item "Repair Database" was removed from the workbench.
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
We modified the fieldtype used for date start display from datetime to datetimeduration and removed the duration field. Please, reload the core package to get changes.
Behaviour was wrong on first login after turning on 2-Factor authentication
PDF preview can now be rendered without any browserextension (see CR1000900). The preview didn't work properly. It is now fixed.
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.
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).
Only white squares were displayed in the color picker panel. Now the proper colors are displayed.
Entry in Config Table overwrites value in config.php
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.
Key search in standard file caching wouldn't deliver nay records. Now fixed.
Cleaned up special Field, only used in a custom branch.
Module Qualifications located in User Details will be removed in 2023.02.001
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.
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
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.
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
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.
It is now possible to set a value that is set for the user or one of its preferences
The Extended PDF-Viewer helps to see the pdf documents without installing PDF viewer extension for browser.
Post deployment action: run npm install
- 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.
adding a functionality into SpiceImport to allow choosing class and method for data handling depending on requirements
Allocation used to be done manually in the sysuirolemodules table. We now introduced a visual interface to administrate the records.
Allocate orgunits to service queues and interprete ACL permissions to access tickets.
Sending a KReport per email as CSV or Excel to one or multiple email adresses.
When the subject a call or meeting or an activity is very long the ActionMenu (arrow down) used to disappear. Now corrected.
Little correction in ServiceFeedbacksController::saveAnswers: create the evaluation record; set servicefeedback status to completed
We added some settings to the .htaccess and ./api/.htaccess to reinforce application security
adding a functionality fo the Spice importer to process big files in parts in the scheduler
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.
Bug fixes displaying multi and absence events.
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.
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.
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.
this mainly is about https support, the ssl verify options as well as username and password for an authenticated connection.
Add new functionality to Spice Importer that allows setting a selected key value when loading new records to avoid the creation of duplicate entries.
Post deployment action: Documents Package
Upgraded the spice chrome extension manifest to version 3 with inbox sdk.
The specific question ID is questionnaire-wide, is non-random and is to be defined by the user.
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.
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.
Some fixes to be really be able to use that old soap integration
Save the origin/provenance of a Event Booking (CRM or Web).
Used hash_equals to comapre user password hash to prevent timing attachs.
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
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.
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.
For debugging purpose it is also possible to see the content of the cache files: use the cache file manager in the workbench
Added System Landscape management to connect CRM systems together and handle the deployment process (loading released packages, deployment files and data)
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.
Integrated pdf viewer library to render pdf content. This replaces the required chrome extension.
Post deployment action: Run nmp install
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.
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
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.
Config:
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
Testing:
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)
adding a capability to open a module listview in a separate new tab
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.
Additional column sub_loglevel for syslogs
Improved SystemOverlayLoadingSpinner and added cancel button for the spinner. Added @Inputs asOverlay and cancellable to SystemSpinner.
Generation demo data for calls and meetings for testing purposes.
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
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
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.
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
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.
Added pending requests count functionality to the backend service to draw the global navigation progress bar
npm config set legacy-peer-deps true
Then run
npm install
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.
msgraph package to download the 365 default mapping for Calendar events, tasks and contacts is now available in package loader under "contents"
Added @Input customButtonsContainer to SystemTree Component to render the provided template as the item custom actions.
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.
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.
Backward compatibility added to ensure safe upgrades: content of sugar_config will automatically be passed on to spice_config.
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?
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
Added keep me logged in option to enable the the browser to remember the user login after closing the browser tab.
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()
Added two-factor authentication methods for more secure verification process. Settings can be selected under workbench > Login management.
Reload core package
For SMS method package Text Messages and a mailbox Required
For Email method package Email Handling and a mailbox Required
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.
Statement for MySQL: ALTER TABLE `syslogs` ADD COLUMN `log_sublevel` VARCHAR(25) NULL DEFAULT NULL AFTER `log_level`;
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.
Please, check you validation rules in your customer projects and check the proper boxes where necessary.
Deprecation
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"
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.
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
Generation of the TOTP authentication during the login process.
Included a case for "handleMessage" in homedashoard.ts, that should reload the Dashboard upon completing a wizard.
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.
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
If the caller number was not found in the CRM, the herold.at search will be done.
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.
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
Prolongation description is now saved to the ticket in field sladeviation_reason
Added search input to calendar to filter the events based on the search term.
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.
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.
added new route /module/{beanName}/{externalId}/external to allow retrieval of Bean by ext_id if the module has an external id
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.
Removed ./api/modules/CampaignTrackers folder ; removed tracked_urls link defined in Campaigns module
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.
UPDATE agreements SET parent_id = consumer_id, parent_type="Consumers" WHERE consumer_id IS NOT NULL AND consumer_id'' AND deleted=0;
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
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.
It should be possible to define the helper label to use for a field defined in a dictionary item.
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.
Config can be passed in config table in JSON format.
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.
New logic: we keep the assigned user as set during "take on" or changed later in the process.
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.
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.
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.
Default is html.
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.
Make it possible to repair only a selected dictionary
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.
The campaign log record now contains the assigned user id of the campaigntask.
accountccdetails
accountvatids
authentication_services
currencies
email_addresses
relationships
servicequeues
spiceaclterritories_hash
users
Added Microsoft Graph Mailbox Transport Handler. Now it is possible to add a Microsoft 365 global Mailbox and fetch emails to the CRM
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.
Reload core package to get proper field list in workbench.
Microsoft generates IDs that may contain a slash. We need to double encode the slash
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.
Logic now tries to find proper match in definitions before it falls back on default SLA.
Added Relationship and Audit fields to report designer tree
Added Microsoft Graph Service Integration to handle Microsoft Calendar and Email APIs integration.
added the option to add apiOnly as validation option for a route so that only api users can access that endpoint.
add an option to set ExceuteCopyRules on a parent field similar to as it is set on a relate field.
Added a strip_tags when extracting the value for the field name in ServiceTicketNotes; Changed extracting to mb_string in the truncateString util function.
With the compiler you can get additional data like "template" or "root_template".
- 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
Fields of type text (usually a description field) used to have a minimum height of 38px. We increased to 80px.
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.
Upgraded Angular to 14.2.0. Upgraded typescript to 4.8.2 and other related libraries to the latest version.
Do not execute the sql query generated by repairTable if there is no query to execute.
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
Added a config option to the GlobalFooter component to allow rendering a dynamic hidden set of components in the application footer.
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.
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.
Added red color using slds-button--brand in sysactionsetitem EmailSendButton in actionset Emails ActivityTimelineAdd Actions
Post deployment action: reload emailhandling package
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).
load countries from syscountries table as enum field
Refactored the change requests tool.
Also adjusted the frontend indicator component to enable using the generic feature.
Values in deeper levels need to be reset in bean on update when new selected levels do not go as deep as older values.
Pivot table was emoty due to empty results caused by a limit 0,0 in the query.
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.
Fill the gap to handle campaign tasks according to a registration status.
We also added a util method LanguageManager::getLabelTranslation() that returns the array containaing the various translations for a single label in a single language.
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.
Load vardefs from database only if system vardefs dictionary is on. This is important when migrating systems.
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
Added a new config optional email fieldset to enable displaying other email fields.
Fix for field types: fieldDateTimeSpan, fieldDateTimeDuration. Duration was n't calculated when Calll or Meeting is editied from calendar
When opening a SchedulerJobTask the stored class name and method name would not appear in the display. This is now fixed.
add a copy option to the componentset editor
Editing of activities from the calendar was not easy since start and end dates were not displayed.
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
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.
set $sugar_config['SpiceCRMExchange']['port'] in config_override.php or set in config table
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
We removed deprecated configurations defined for deprecated module Cases (removed from SpiceCRM by the end of 2020)
Post deployment action: reload core package
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.
A selected module from the list would set the technical module name in the display. Now corrected so that translation is displayed.
['system']['module_cache_enabled'] to enable/disable caching.
Breaking changes
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
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
You will have to migrate your email templates. via_spb =1 shall be moved to editor_type = pageBuilder.
Remove column via_spb after migration.
Step1:
Find all methods from the entries in syscustomtemplatefunctions
Step2:
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.
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`;
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
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.
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.
Release Details 2022.02.001
define custom fields and custom dropdown values in workbench dictionary interface; removed ./api/cache + ./api/language folders
https://github.com/bpmn-io as a modeling tool for BPM .. woudl bne nice to use as visualization for the Workflow engine
This development is the prior work for 1000337. See 1000337 to learn about Workflow Graphical Interface feature.
Added table containing keywords and reserved words. The current check now retrieves information from the table sysreservedwords.
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.
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.
Fix error message on username field during the registration of User
Goal of the ticket: Creating a new Prospect List directly from a Bean (i.e. Accounts, Contacts, etc) with related Seeds.
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.
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.
By converting the lead there wasn't set a relation for contact and account.
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.
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.
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!
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
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
Minimum requirements for PHP is now 7.4. Added the php extension mailparse as part of the required PHP extensions.
added field access check in the audit log so that hidden fields per ACL are not displayed there
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.
Updated angular to 14.0.1
Role dropdown only contained the roles assigned to the current user. In this specific view all available roles shall be displayed.
The settings 'simple' and 'tabbed' were removed from navigation preferences. From this release on there is only 'subtabbed' paradigm.
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.
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
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.
Open a confirm modal to execute repair db on error.
typo in parameter maxlengt which is now renamed to maxlength
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.
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
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.
add a new reminder icon in the global header tools to make reminders more visible also outside of the dashlet view.
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
added Shortcut CTRL-S to focus on the global search field
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.
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.
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.
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.
Edit Icon in Book selector won't react for edition.
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
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.
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.
Call the after_login hook
Audit log did not display text changes when the field that is audited is of type 'text'. Now it does.
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.
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.
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.
The deprecated file modules/Schedulers/_AddJobsHere.php was removed.
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
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
Removed deprecated Administration class and its uses. Removed the sysmodules entry Adnistration from database reference. Removed old files that used to handle repair.
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.
Lead converts into account but not contact. Convert lead modal does not close.
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
Search with capital letters or cyrillic chars do not output expected results. Bizlink - SpiceCRM partner - implemented a fix.
allows to use of tranlation for combined labels
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
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
Parsed Copy Rules Params Field as JSON in metadata Service on getCopyRules
Calendar entries in the past are now be greyed out.
Phone extension may be stored in user information. Incoming call from internal extension will now be identified and displayed in call popup.
New field techdescription. User may describe testing details related to the change request.
Agreements with validity time frame. Define the agreement, allocate a category, upload one or more documents.
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.
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.
Added new task 'deploy' to gulpfile which execute the while packaging process tasks.
Administrate templates for text messages
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.
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.
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.
Integrated the Angular CDK Library in list view to improve the browser loading performance.
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.
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.
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.
Refactored modules names, some link names and corresponding UI config
Now it is possible to write your own module handler class for MS Exchange Sync by creating an entry is sysexchangemappingcustommodules table.
Adding new field type for ccdetails
Enabled accessing the template class by the the {template.key} syntax.
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.
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.
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.
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.
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.
/cache/Relationships is no longer needed. Removed, with the logic behind it. Relationships cache is now available in $_SESSION['relationships']
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
A button will be added to the field 'fieldemailrecipients'. It will enable to display email addresses from the parent related to the bean.
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'.
Added a new Workbench element to handle managing the service calendars.
Allocate sysuiroles to user depending on its LDAP login group
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.
Added the SystemDropdownTriggerButtonDirective. This can be used under the system-dropdown-trigger to handle the trigger click instead of the parent.
Used the system dropdown trigger directive to open the picker dropdown. This will display the picker on the top level in the dom.
Added an new system prompt type 'input:date' that renderes the system input date component and return the value on confirm.
Create partner agreements and visualize progress on negociations. Manage activities all around business talks and link to opportunities.
Add Breaking changes field.
Fixed that if an email that is dragged that all email addresses are added
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.
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.
Manage password security settings, login channels, login attempts, block/unblock users.
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.
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.
Questionnaire Participations can now also be anonymous.
Phase 2: Compatibility with CampaignTasks and Parameter Fields for the Template Functions
In addition to letters and digits, special characters can now also be specified for the password.
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.
New/additional user type: API user.
Added retrieve before processing if needed to SugarBean::mark_deleted. This ensures having the necessary bean data before handling the delete hooks.
Improvement of the change/reset password form.
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.
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.
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
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.
Integration Starface Telephony System.
Improve Calendar performance. Google Calendar Integration.
Ability to change values using various functions before they are inserted.
Allow Users to show/hide their own calendar in the calendar monitor.
Display the user notifiactions in a dropdown.
Modify get_linked_beans() to accept array of link names as first parameter
Moved $GLOBALS Class instances to singletons.
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'
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.
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.
Reserved the right corner of the toolbar for ng content to allow rendering custom tools embedded in the component.
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.
Added a new field 'email_signature' to the mailbox to be used while sending emails.
Corrected the fileTooBig value to calculate the count csv rows and not the file raws
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.
Added a new field type activity date to display a short formatted date based on the past, today, and the year.
Added indeterminate option to the system checkbox.
Added a select all checkbox for the attachment in groupware.
The attachment can be selected by default by a sugar config variable.
Added status icon send to the field type email status
Allows an entire questionnaire to be displayed as an input field.
- Added useMediaFile option to enable/disable using media file module
- improved the fullscreen logic
- added insert image from url tool
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.
Changed to assigned_user_id field type from 'relate' to 'varchar' length 36
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.
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.
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.
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.
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.
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
An option has been added to number the lines in a listview supporting the viewing and navigation in large datasets.
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.
added the feature that the export buttons in the list header are disabled if there is no record selected. Increasins usability.
Added a new option with the component ObjectListHeaderActionsSelectRangeButton allowing a user to select a number of records based on a range specified.
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.
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.
Adde a new field email activity openness to enable toggling the email openness status between 'open' and 'user_closed'.
Added a pagination button bar to the subpanels, so in additon to the view all there is now also a pagination bar.
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.
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.
Added number formatting for the items, totalcount and the aggregate item count in the list views
Make FTS transactional and logging in separate DB connection
Changed the Assistant on the front page to retrieve the entries from the FTS engine with clear configurability using the module filters.
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.
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.
Some errors shall be returned to screen as exception before the logic falls into a php error.
Minor change to disable the aggregate selection checkboxes when a search is running. This avoids conflicting and overlapping requests.
Added attachment panel to Campaign Task to enable sending attachments with the campaign email
Added field 'reference_id' to email.
Clone the reply/forward email related entries from the reference (original) email.
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.
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.
Updated to
- Angular 12
- rxjs 6.6.7
- zone.js 12
- underscore.js 1.13.1
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
Added an option to reconnect manually right away in the reconnect await dialog. Also extended the default reconnect time to 10 seconds
FieldChecklist refactored to ObjectChecklist.
Focus/blur Logic improved.
Separated saving.
Temporary Backup fields added.
Built an appropriate filter query for the fields from type multienum.
Added 2Factor Authentication with TOTP Tools like google Authenticator
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.
Harmonize the CRM log viewer to be in line with the API Log viewer.
Added an option in the template syntax to add an embedded template in the syntax.
Set the default navigation paradigm to tabbed view for the user preferences.
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.
Added a new system component renders an input checkbox toggle and handle the value by angular two way binding.
Added 'forceRetrieve' Option on BeanFactory::getBean. This helps to ensure retrieving list items that are referenced to each other.
Only admin users may login as another user.
Backend: In KReportQueryArray reference operator from type datetime fixed.
Frontend: ِFixed the reference dropdown values.
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
Cleanup of entry point adding namespaces
SpiceCRM inbound / outbound calls with five9
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.
Create multiple checklists in a task.
Added config option to full name field to display it "simple" without academic degrees before and after the name in edit view
Added concat street name with number if the field number is hidden in the system.
Bug fixed: Workflow Task Email was not sent.
Link between authorization
roles and Ldap groups
DeveloperMode shall no longer trigger a refresh of vardefs.
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.
Oracle compatibility with SpiceCRM.
-
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
REST library upgraded to Slim version 4
Update to angular 11.1.0 & cdk 11.0.4
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/
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
Return screen notification when session is dead so that user knows he/she should log in again
Additional config variables: apply participant_policy on defined modules
Updated lightning design to Version 2.14.1 (Spring 2021)
- 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.
- 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.
Update to angular 9.1.1
Added a footer height to the internal services allowing fixed footers to be displayed on the screen.
Change to FTS Manager Dialog
Changed buttons in small screen view for responsive design to render as button icon group.
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.
Support for Elastic 7.*
Added service functions
Update to lightning design 2.11.7
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.
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.
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.
Added new panel for participants in calls and meetings including the participation status. Invited users can also set their attendance status.
Added three components for , and to be used in templates and to optimize the change detection in Angular.
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.
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.
Added loading of full data for recent items so the custom field sets can be displayed in the recently view list.
Refactor the use of {{language.getLabel…}} in a template to use component… should reduce change detection cycles and improve performance.
Update layout for admin screen.
Remove Renderer for Angular9 compatibility
Update to angular 9.1.2 also including angular cdk 9.2.1
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.
Changed modals to adopt full screen view in modals and small form factors according to responsive design
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.
Currently aggregate bucket values are sorted by _count desc. Now it is possible to define sorting by _key in FTS settings.
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.
Reason:
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.
Solution:
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.
Removing unnecessary field definitions, adding n-2-n relations.
Upgrade of component ProjectActivityDashlet
Added a new module for the SpiceAttachments in the front-end.
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.
New field for uploaded files
– should look like “parent” field
– it should be possible to upload and remove files from a bean
Use custom method set in indexproperties to enrich values in index for a non-db field
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
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.
Associated relations were not recovered even if recover parameter was set.
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.
Handling duration is missing in ServiceOrder class.
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.
Improve package definition for salesdocuemnts; introduced B2C; additional templates.
Parse real value of enum when used in a condition and not the translated value.
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.
Create a guide for release process. Retrieve configuration changes using package loader (package “deployment”).
Make releases linkable to Accounts and Projects.
Button which opens modal with e-mail reply logic.
Enable the use of module filters in Output Templates and use additional parameters like limit or sort_array.
The new module QuestionnaireParticipations allows better access to participations than QuestionSetParticipation does.
Update Activity Stream items. Moving components from object components to activities and cleanup of deprecated components.
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.
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.
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.
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.
The Release in Details
Ability for admins to view/change foreign user preferences
Object list header action menu and object action menu should extend the object action container
Date time fields constantly adapt to the current time zone setting of the user.
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
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 Reporter Views for Summary, Grouped, Tree and Pivot View
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
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
Backend only for admins
Better determination of user roles (for app launcher dialog)
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
Save button in the Toolbar of “Rich Text Editor” Component, which pass the content to “Field Rich Text” component to handle the save process.
- 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)
Implementing the closemodal with the new actionsetmenu
No color in read-mode by the fieldcolorenum field
CloseModal and ActionMenu merge
ObjectList with default sort info (moduleconf)
Define a set of Dashboards to be displayed in sub tabs in home.
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.
A Field which displays checkboxes grouped under specific categories
The field multienumdropdown renders an enum field as a dropdown multiple select list using the SystemMultipleSelect component.
French language package
Trigger bulk indexing manually
Improved Scheduler Job Log
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
“Button Release All” set the status to “Release” to the selected document and all its sub documents
Enable where operator for int when vardef type is bigint
Lightning Design update to 2.10.0
Load default values when preference is not set
The document (result of a output template) is now savable in the CRM system.
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
Scheduler field: Last SUCCESSFUL run
Scheduler: Test function (dummy)
It should be possible to select custom actionsets in the workbenchconfigoptionactionset!
A Field which renders a list of items grouped under specific categories in a dropdown with multiple selection functionality.
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
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
UTC Offset has been added to the UI Date Field Values to display the right date for the current UI Time Zone
Added a Week Number in the System Date Picker
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.
The Release in Details
Add flag to show the button outside the drop down box
Update to Angular 8.0.1, also update to Angular CDK 8.0.
Bonus Modules (BonusCards, BonusPrograms) Management
Improvements of lead conversion done by eVolpe
New module to interact with dnb API and retrieve DUNS data
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.
Labels manager sets value of default language for first translation. Catch when empty and set first language found in languages list.
Define locations and assign location to a piece of equipment.
Add a deprecated flag to the “ObjectRepositories” Score out the deprecated objects Popup when somebody tries to add a deprecated object
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
PHP 7.3 support
Polish Language Files for Backend
New question type “Net Promoter Score” (NPS).
The button is located in the header and reloads the configuration, only displayed for admins.
ServiceFeedbacks: Results Tab for Questionnaire Participations
Spice Bean Guides Definitions are now available in corresponding package (opportunity management, lead management…)
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
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.
The Release in Details
Form gets stuck telling that password does not match re-entered password.
When you create a bean over a relationship -date_entered id was deleted from fts indexer.
Keep the searchterm. Selected aggregates and results in the listview when navigating away from a list and back
A new system component displaying a universal progress bar
POST requests now can report their progress status, for displaying progress Bars
Add a check on values for start, limit and filter parameters and clean mislead values.
Fix: set sort flag for last_name since full_name sorts on last_name and is the first field in listview
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
The username and password fields of the login Form are better titled now.
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.
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.
An Add-In loaded directly in Outlook that can save the Emails in SpiceCRM and add related Beans to those Emails
Capture and show duplicates when adding a new record.
Label rendering is now included in field rendering
SpiceCRM 2019.04.001
Tagging
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.
The Release in Details
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;
Code clean up: use vardefmanager to create Scheduler vardefs so that date_indexed field (for FTS capability) is created during SpiceCRM installation.
Added capability to retrieve images from custom path for module icons in side bar display
- 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’);
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.
Do not load Hooks from database when no global database instance is available. Also fixed hook_array structure for hooks retrieved from database.
Field Email Validation on save action was always returning an error message “input required” even though the field was filled.
Store which action is being applied to bean: create, update
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.
This field translates a ” text id” into a human readable value.
Fix DB Query error during install process
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
New Access Management module SpiceACL shall be considered in KReporter-Queries.
This component provides a platform to easily handle the untranslated labels for the default language.
Added the field “login_name” to UserAccessLogs to store the login names of failed login attempts
Keep the searchterm. selected aggregates and results in the listview when navigating away from a list and back.
Added confirmation queries for the deletion of attachments or the deletion of items in related lists.
This component handles the related texts of a module.
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.
Added animations to the related panels so when they collapse and expand are smoothly faded in and out with height and opacity
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”).
Added the ability to entitle subpanels or full related lists with specific title of the relation (instead of the title of the module).
- 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 the collapsible card in the systems so it animates smoothly when collapsed or expanded
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 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
- 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 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
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.
Changes to the loader logic and cleanup of REST services
Update on Tagging and Tag handling
Added the ability to filter out log entries with specific text fragments.
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
The Release in Details
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 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.
- 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.
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 the email addresses field so it will render nicely on mobile phones
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”
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
in the activity add container the menuitems have been changed so on smaller screens with more activitiy types enabled an overflow item is rendered
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 $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
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
- 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.
“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”
- add capability for users to upload a user image.
- Also add a generic component to load an image and crop it.
updated Angular to 7.2.6
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 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.
Methods added to metadata service:
- updateModuleListType
- getModuleFilters
- getModuleFilter
- setModuleFilter
- removeModuleFilter
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.
Refactor static methods to non -static in ACLController class; Create ACLControllerInterface
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
added a fieldset to the component object page header so the display field in the page header of an object can be freely configured.
- 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.
- 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.
update to Angular 7.1.3
SpiceTheme ignores loaded logo in backend. Integrate check loaded image in login screen
- added the unique transaction id to the log algorithms
- enable to track logs by transaction and roundtrip
built in viewer tools in the admin section to display logs
- changed logic so only core configuration can be loaded in the backend
- all further packages then to be loaded via the frontend package loader
fix in the installation with https protocol so the backendurl is written properly
- react to error 429 on elastic
- send a toast to the user with the message that elastic has an overload
added functionality to collapse subpanels
- 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
a new section in the admin area to manage and define dashlets that then can be easily used to build custom dashboards
- added optional protocol for the elastic settings
- useful if elastic is running on https protocol
- 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
- 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
Separation and cleanup of the latest KREST package to allow Standalone Installation for those useres using Tools like KReporter standalone on SuiteCRM or SugarCRM
- remove any trace of deprecated modules KDeploymentCRs,KDeploymentSystems, KReleasePackages
- check the destiny of KDeploymentMWs in backend.
modify LBL_PARENT_NAME to LBL_PARENT, subpanel LBL_PROJECTACTIVITIES_SUBPANEL_TITLE to LBL_PROJECTACTIVITIES fix angular digest error on save in WBS Manager
- Creation is considered but not update when additional fields are defined.
- Update shall be considered by repair/rebuild.
- Make index names unique database wide
Revision of the logic/code/ui for more user comfort and better error handling.
- 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
- finetuning and updates on login with Google
- Integrate Meetings and Calls with added logic hook definition
- 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
Fix for KReporter 4.4
- 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.
- 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
- changed logic so default folders for storage for media files are automatically created
- minor coding changes and cleanup
- Possibility to turn off trash bin
- added name formatting to the user preferences
- rework on full name field to properly interpret user preferences
- 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
- 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
- redesigned the lookup and relate fields
- changed the component structure
- 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
- added a fix in the speech recognition dialog
- System potentially did hang after pausing and continuing on
updated core Angular to 7.0.1
- updated Lightning Design to 2.7.4 (Winter ’19)
- updated the role picker dialog
fixed user preferences bug for admins
in some situations after a logoff and login the user might have had the wrong role
- 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 an option to handle Database updates transactional on REST Calls
- enabling commits and rollbacks in case of handling of more critical and transactional data
- 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
- color Enum: display a color indicator with an enum value
- multiselect MultiEnum: list an select with multi select option
- 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