HaloCRM Roadmap
Find out about all the upcoming developments in HaloCRM
In Progress
Distribution list / marketing email double opt-in
A new area of Halo to send mass/bulk emails to email lists that are created using the report builder
WeChat Channel
New channel to allow for communication with your customers using WeChat.
Conversational Ticket View
New conversational, customer-focused view for managing customer service and sales. Designed to reduce duplication and drive customer satisfaction.
Multi-Page Ticket Logging
Ability to split a ticket form down into multiple pages based on field groups, with a progress completion bar.
Up Next
Future
Recently Completed
Eracent Integration is now available
An Eracent integration is now available, allowing for the import of assets.
To use this integration you have an account set up in Eracent that you can use to make API calls. You then need to enter the URL for your Eracent instance, as well as the username and password to connect the integration.
Site Mappings
Eracent does not have a concept of sites or customers, so to determine which site an asset should be created against you can use site rules. These rules are based on field values, and if matched will assign an asset to the site of the mapping.
The user of an imported asset will be matched to a user based on their email address. This matching will be done on the username, email, and network login fields, and you can specify an additional field to try matching on as well.
The matched user can be used to override the site mapping.
There is also a setting to not change an existing asset's site.
Asset Imports
All types of assets will be imported from Eracent. All of the system fields for the assets are available to map from Eracent. Software is also imported for each asset, with an option to match these to customer licences.
The asset types of the assets can either use a fixed type for all assets, be determined from one of the fields, or use asset type mappings that are determined using rules based on the values of the mapped asset fields. The mappings can either use a specific type or use a field to determine the asset type.
If none of the rules are matched, a default asset type will be used, which can be configured to not allow the import of any assets that don't match any of the rules, allowing for certain assets to be excluded from the import.
Additionally, there are settings to: deactivate assets deleted from Eracent and what status to set them to when doing this, not create new assets, not update existing asset types, and the status for new assets.
Assets can be imported manually or on a recurring schedule using the Halo integrator.
Improvements to the MYOB integration
Syncing of bills
Bills can now be synced and updated in MYOB when created from purchase orders in Halo. There is an accompanying option to also set the default freight tax under "Syncing to MYOB":
Syncing of payments
Payments created in Halo / posted to Halo can be synced to MYOB. There is an option to choose an account to receive payments to under the "Syncing to MYOB" in the payments section.
If no account is selected here payments will be classed as undeposited funds in MYOB.
Note: payments edited / deleted in Halo will not be edited / deleted in MYOB.
In addition to syncing to MYOB, payments can be brought into Halo on a recurring schedule using the Halo integrator. This is enabled under the "Halo integrator" tab.
Payments are retrieved based on the last sync date of the Halo integrator. This can be reset and it will bring in the last 7 days of payments. If last sync date is not set (e.g the integrator has never run for MYOB) it will bring in the last 7 days of payments from today.
Only payments for invoices in Halo that have been synced to MYOB will be imported.
Default item for invoices, bills and purchase orders
There is now an option to set a default item in Halo when syncing an invoice, bill or purchase order to MYOB.
The items nominal and purchase nominal accounts codes will be used if the line does not have an item or the item does not have an accounts code set, that was imported from the MYOB integration.
Delete entities in MYOB
Invoices, bills and purchase orders can now be deleted in MYOB when deleted in Halo.
Vorboss integration is now available
The Vorboss integration has been added to the 'Product Catalogs' integration group:
An API key is required from Vorboss directly. A default vendor and product group must be selected to create new products under when adding Vorboss services to quotations.
With the module enabled a new button to "Add Vorboss product" will appear on the quote details screen. This opens a search screen so that you can see what services Vorboss can offer at your customers specific postcode. This is filled out automatically if the postcode is already set on the quote.
Once a Vorboss service has been selected, this will be added as a line to the quote and created in Halo as a recurring product based on the term duration from Vorboss.
There is also an option to enable automatic ordering of Vorboss services:
Once synced, Vorboss order IDs are visible in the details section of the quote:
All order requests can be viewed under the "Outbound Requests" tab:
Added the option to use federated credentials in Halo API applications with the password grant
A credential type option is now available for the password grant.
Using Federated Credentials allows you to establish a trust relationship between an external identity provider and the Halo API, thus allowing an identity token from the identity provider to be used instead of a static password for the token exchange.
When adding a credential, an audience, issuer and subject identifier must be provided to allow the Halo authentication server to correctly validate the identity token.
The subject identifier must also be populated on the details tab of the agent/user you wish to sign in as. The username used in the token request is the username of the agent/user as before. The password property is the only change to the request; it must be replaced by the identity token from the identity provider instead of the agent's/user's password.
Added the ability to translate email templates
To enable this functionality you must enable the setting "Allow multi-language email templates" in Configuration > Email.
With this enabled you can set individual email templates to be multi-language.
To translate an email, you need to use configure custom email variables. For these, you need to specify a name for the variable and the value for the text. This text can then be translated into any language you have configured in Halo.
These can be configured globally for use on multiple email templates or at individual email template level. The values for these variables can contain $ variables.
These variables can then be used in the email template for both the subject and the body using the following format: <<Variable Name>>
When sending an email, the language of the recipient will be determined from their settings. For users, it will use the language the have selected, otherwise it will fall back to the site-level language setting. For emails to agents, it will use their specified language. If none of those settings are specified, it will use the global language setting.
When sending emails from a ticket, the language of the user will be used, even when sending an email to multiple recipients. The only exceptions are when using actions with the system use of "Email Agent" or "Add note to Parent Ticket", and emails on opportunity tickets will not translate until a user record has been created from the opportunity.
Please note that translations will not yet apply to the following:
- Bulk emails, such as emailing service subscribers or distribution lists
- Actions with system uses that email all approvers of a ticket
- Emails to suppliers
Added the ability to use the end-user chatbot in Slack
It is now possible to create applications in Slack and associate them with chat profiles in your Halo instance. This allows users within your Slack workspace to communicate with a custom-defined chatbot that you have configured.
The new functionality can be configured on the new End-User Chat tab of the Slack integration.
Unlike the rest of the Slack integration, this functionality requires you to create your own Slack developer app. This gives you the ability to customize the appearance of the application for your end users.
To make the creation of these apps straightforward, the Create Manifest button can be used to generate a JSON file that can be imported straight into Slack to create new applications. This ensures that your apps are configured with the correct permissions and endpoints.
Once the app is created, you can register it in Halo and assign it a chat profile allowing the correct chat flow to be used whenever a user starts a conversation via the app.
Once the app has been installed into Slack, users can start new conversations in the Messages tab of the app using the /startchat slash command. They can also end current conversations with the /endchat slash command.
Various prompts/inputs will be available to the user throughout the conversation, helping to guide them through your configured chat profile. An example prompt where a user has asked the bot a question and the bot has returned knowledge base articles to the end-user can be seen below.
Added the Rapid7 Integration
A Rapid7 integration is now available, allowing tickets to be created from Rapid7 using runbooks in Halo. Webhooks from Rapid7 will need to be setup to trigger the runbook when an investigation is created.
Once the integration is enabled, the runbooks will automatically be added. Alongside this a schedule will be made for the alerts runbook to obtain future alerts on the investigation.
The closure runbook can be implemented to close investigations in Rapid7 when a ticket in Halo is closed.
Azure Consumption billing is now available
To Enable the functionality you can find a new tab in CSP:
Once you've done this you can enable this is in each tenant to import via the integrator:
and view import csp invoices:
On each client imported via CSP you can see csp invoices that have consumption/reserved instance data imported:
Then finally to bill this data, you can add recurring invoice lines which come with the following options:
Added Opportunity Phone number to Import Spreadsheets.
Improvements to integration Runbooks
New features have been added and improvements have been made to Integration runbooks. These improvements are aimed at making runbooks better suited to bulk imports and longer syncs, improving their performance and making them easier to configure for this purpose.
1. Runbook-Level Variables
A new entity has been added to Runbooks called Runbook-Level Variables, which behave similarly to Input Variables and Output Variables, but offer new options and are better optimised for long-running tasks.
These variables are available for all types of Runbook.
You can define a new variable from the Runbook configuration screen. The initial value of a variable can be;
- Empty
- A constant object, array, string, integer, float, boolean or datetime.
- Calculated from the initial payload that started the runbook (for runbooks launched via a public endpoint)
- Calculated from ticket/action/asset/user values (for runbooks launched from the relevant entity)
Instructions detailing what can be used are shown on the Runbook-Variable input screen.
The value of these variables is calculated when the runbook begins and persists across the lifetime of the runbook run, rather than being calculated whenever it is used like Input and Output variables.
The value of these variables can be changed based on the result of an integration method or Halo API action by adding "Runbook-level variable mappings". These can fulfil the same functions as Output variables except they are declared on the runbook itself.
All Input variables have been migrated to runbook-level variables as part of the upgrade and input variables have been removed.
2. Constants and using other Variables in Runbook-Level Variables
Runbook-level variables accept the input of constants opening up new use cases.
For example you can declare a pageSize and pageNo variable at runbook level and set the values to an integer, and use them in integration methods, rather than hardcoding the values inside the method itself.
These variables can also be set to other variables, or used to join multiple variables.
E.g Set the value to <<response^string1>> <<response^string2>>
3. Calculations in Variables
Furthering the use-case of runbook-level variables, you can now perform basic arithmetic in variable values using the ##calc## operator.
Open a calculation using ##calc## and end it using ##/calc##.
An example use case would be to increment a <<pageNo>> variable in a while loop. E.g ##calc##<<pageNo>> + 1 ##/calc##
4. Object Mapping Profiles
You can now easily map an object or array of objects to a different format. This allows you to convert a response from one API into the format required by another API all in one step.
Inside a Runbook-level variable mapping for an Object or an Array variable, set Extra Value Processing to "Cast to an object of another type". You can then build the mapping using the <<obj>> variable to refer to the original object.
When the variable value is calculated the mapping profile is applied meaning the variable is in the new format ready to be used in the next method.
Datetime runbook-level variables can now be set to either the current time in local time or the current time in UTC.
This can be used to pass deltas to APIs.
6. Persistant variables
Building upon the new date variables, a runbook-level variable value can be persistent between runs of the runbook.
This allows you to hold a delta / last-sync-time in a variable that remains set on each run of the runbook.
For example, declare a variable <<lastUpdate>> which is empty by default and make it Persistent. Use it in a method to send a "last_modified" parameter to the API. After the result of a method, set it to $-utcnow. Now when the runbook next runs last_modified will be the date the runbook previously ran.
To be even more precise in the above scenario, declare a second date variable <<nextUpdate>> and set this before the method runs. Then set <<lastUpdate>> = <<nextUpdate>> once the runbook finishes running.
7. Not equal to Array operator
Similar to the response[field=123] operator, you can now use response[field!=123] to find an element where "field" is not equal to 123.
You can use this with the new Batch Response in point 10 to detect if any items in the batch failed.
8. String Variable Escaping
Improvements to string variables in JSON payloads so they are escaped when appropriate
9. Iteration in Batches
Iteration steps now allow you to iterate multiple elements of an array at once. The iteration variables are an array instead of an object when doing this.
This allows you to more easily batch post responses from APIs into Halo API actions, making the runbook more performant.
This is configurable on the Array Iteration Start step.
10. Bulk Response for Halo API Actions
When bulk posting into Halo API Actions you can now return the response as an array containing the status code of each operation and the response.
Enable this from the Halo API Action Step - Return batch response
11. Runbook Performance Improvements
Variable caching for Runbook-level variables, Iteration variables and Output variables have been implemented, reducing the amount of time it takes to calculate variable values use them in methods, particularly for bulk operations. Various other minor performance improvements have been also made to variable population in Runbooks.
12. Easier third-party-id matching in Halo Entities
Halo entities that support third party id matching now accept a "_match_thirdparty_id" and "_match_integration_name" property.
Set "_match_thirdparty_id" to the id in the third party system and "_match_integration_name" to the name of your integration.
This will be used to perform a match when posting and update the existing record in Halo if the third-party-id already exists for the integration.
These are included in the sample Halo API Method payload for supported entities.
13. Max While Loop Iterations
A setting has been added at Runbook level for "Infinite loop detection threshold".
This allows you to lift the safety net for loops (repeat operations on the same step) in runbooks once you are confident that your runbook cannot cause issues. This defaults to 5.
This also allows you to test integrations that may do a lot of loops to fetch pages of data in a safe way.
14. Stop button
A stop button has been added to the Automation Runbook Log screen. This terminates the Run at the next possible opportunity.
15. Calculate Variables Step Type
A new runbook step type of "Calculate Variables" has been added.
This allows you to recalculate a Runbook-level variable without using a method response.
Various bug fixes and minor improvements have also been made to Runbooks. Improved trace logging for Runbook runs.