Another big week at Accelo; apologies for the delay on this week's update - turns out not all Trans-Pacific flights have WiFi! This week, while we still had a number of invoicing fixes and improvements, we've been able to spend more time on our Q4 Priorities and ship a number of improvements and bug fixes that we hope you'll appreciate!
Accelo's email capture functionality is powerful, but we had a couple of bugs come up recently that, while uncommon, were important to squash.
The first was a formatting issue, actually caused by our email delivery provider, SendGrid. When we capture a plain-text email that we need to re-send on (often in the context of an email to the request queue), SendGrid's systems were automatically converting it into a HTML email and in the process wrapping all the lines together into one big block. We've now made a change to tell SendGrid not to do this to these emails which only have plain-text (which are often techie telemetry info or notifications - the vast majority of emails already have both plain-text and HTML content).
The second was a bit of a curly situation where two clients corresponding on a single request could have emails relayed to each other. The scenario we saw was where a contact at Client A writes into the request queue, and a user of Accelo forwards the email to contact at Client B. When the Client B contact replied and included the request queue, Accelo was sometimes sending the reply onto Client A (it was actually a very very rare situation). While having a free-flowing conversation around a request is usually a good thing, sometimes it isn't and when it isn't a good thing it is a really bad thing. For this reason, we've now adjusted our relay behavior to make sure nothing from any client can ever be relayed to any other client.
When you’re using the Company Billing tool it’s common for the invoicing step to load up several invoices - one for each unique contact associated with the work being billed. The consolidation feature is helpful for consolidating multiple billing contacts (and therefore invoices) down into one or two, but it was limited to the original set of billing contacts. We’ve improved things so now you can search from any active contacts within that client to re-assign the invoices to.
The folks at Kaseya released a new version recently and our clients who use the integration have been upgrading their own systems, and in the process, a change/bug in how Kaseya handles token expiries in Authentication caused our integration to break. In a nutshell, in the previous version of Kaseya, when you used an authentication token that had expired (and they all expire - swapping them for new ones is the way it is supposed to work) Kaseya would tell you it had expired and we'd know to go and get a new one. The new version of Kaseya introduced a bug where an expired token wouldn't throw an error - it would just return a list of empty alarms. Since we didn't know any better, our code thought everything was dandy. We've now made a change to refresh tokens more frequently and not trust what Kaseya is telling us anymore.
While we have plans to introduce proper Internationalization and Localization (multiple languages, etc), we’ve had a lot of clients point out that having a lot of customization in the Invoice Templates means one of the few places they still need to localize Accelo to work for their clients is in the way numbers are formatted. While we're still working through this, the first thing we've done is improve the consistency of using commas to improve readability of currency values. Until now, only a handful of places were using commas.
In the coming weeks we're looking to introduce more currency display and input formats.
Ironically, once we fixed the Kaseya issue above, another issue poked its head up. When we capture an alarm from Kaseya (or Maxfocus - it works the same way) we create a Request in Accelo and try as best as we can to make the Request link to a client contact (unfortunately, while RMMs are great at watching workstations and servers, they're horrible at sales functions so we have to make some best guesses here). We had a bug where, when processing the initial request and creating the activity with all the notes we were inadvertently emailing it to a client, potentially causing some confusion.
We've now fixed this, but in the process it bought up a good point - you can use the fact Accelo creates a request on behalf of a client contact to set up an autoreply for your alarms to let your clients know you've received a notification (Server XXX Backup Did Not Complete) and that you've got things under control and don't hesitate to reply if they've got questions or concerns. You could also use the new Triggers on Requests to only send that sort of email to VIP clients if you like - just another way Accelo can help automate your day and improve your client service.
By default, non-Admin users can only see their own Activities in this report, except when they're the manager of another user - and in this case they gained access to the "All" filter for Staff. This filter was mistakenly giving access to activities logged by all staff, rather than just all Activities for staff they manage (including themselves).
Our team were alerted to a curious bug where a signoff couldn’t be changed to the Approved status if there were any non-approving contacts (observers) notified as part of the signoff. So even when all the relevant Approvers had signed off, the status would not change. We’ve fixed up this quirk to ensure your project or ticket-related signoffs can be handled correctly again.
With the recent invoicing upgrade, users can now import materials and services from Xero, QuickBooks or Saasu. Each system is a little different and one thing we didn’t realize when building the material items import was that in Saasu you can mark an item’s price as tax-inclusive. This setting doesn’t exist in Accelo (since we always handle tax later on, when invoicing, because the tax rate you charge is often dependent on where the customer is, not what you're selling) so those items were being taxed twice. We’ve now handled this situation by checking the tax rate on the item in Saasu and adjusting the item price accordingly when imported to Accelo.
Importing of service items - at the moment - is more simple than materials, in that we only import the name of the service, the default account code, and the default tax code. In the future we’ll integrate Service Items with Billing Rates to provide more functionality, but for now our Service Items are rather light-weight - so it was interesting to find that for some QuickBooks Online (QuickBooks Online) users, the imported Service Items had no tax code specified. This came down to a configuration option in QuickBooks Online which we weren’t handling nicely, and is now addressed - so there’s no need to re-configure QuickBooks Online - just perform a re-import of Products & Services in Accelo if you’re still seeing all your Service Items with “Tax Exempt”.
If you’ve had a play with the new Company Billing (aka Bulk Invoicing) feature you’ll have seen it’s quite powerful and flexible - thanks to all the filter options. All these options, however, can be quite a burden if you have to remember to change them all the time, which is why we’ve allowed you to simply pick an invoice template to simplify and speed up the process by preloading the filters.
This has worked a treat since all you need to hit is “Apply” and watch your list of companies-to-invoice appear on the right of the screen. However, if you had adjusted any of the filter options to be different from the template before hitting “Apply”, while your results on the right would be fine, the next step of actually seeing the invoices may have been inaccurate due to the way this screen loads in the template settings (with the template overriding the preferences you'd set in filtering).
We’ve now fixed the following fields that were not having their filter values passed in correctly:
Also on the topic of Company Billing, we’ve learnt that configuring pre-paid retainers with just materials to bill each period (no services) is not that unusual, and it turns out these kind of periods were not being returned during the first step of the bulk invoicing tool.
We’ve updated the filter logic so finding and billing for these periods in bulk will be a breeze too.
This little feature within the Edit Company screen allows you to specify any number of contacts that should be CC’d on any invoice emails sent to that company - ideal for those situations where the client says "in addition to sending invoices to me, can you also CC them to Richard in Accounts?".
The issue was that the tag-style field used to add and remove contacts here wasn’t working - but our UX team have sorted it out now.
Ok, we admit this feature should have been dropped in a while back.. Thanks to those customers for chasing us on this little improvement! We know it doesn’t happen often, but when you’ve customized the costs and typed up a proposal and then the contact person changes, it was a small chore to re-create the quote just to update the contact! Now the contact can be changed, in-line style, from the left-side of the View Quote page.
We had a bug until recently when, on converting a Request pulled in from our integration with MaxFocus, the Asset involved in the alert/issue would be lost when using built-in conversions from a Request to a Ticket. This is fixed now.
The Xero import of contacts into Accelo was missing a handy feature - the ability to choose which types or statuses of Contacts to import from Xero, and what statuses you want them to drop into inside Accelo. We've now implemented a mapping feature to our integration screen to make it easy to bring in contacts from Xero and have them drop into Accelo the right status.
Our original Google Task sync code didn't have the ability/code to change the status on the remote (Google) side to be "not completed". As a result, we had a situation where the user could mark a Task as completed in either Accelo or Google, but when the user re-opens a task in Accelo (not that common admittedly), we wouldn't change the status to be explicitly to be "not completed". On our next pull of task information from Google we'd see that Google thought the task was completed, so we'd complete it - causing much confusion. This is fixed now.
This small but helpful tweak involves auto-setting the manager of a task to be the manager of the project or milestone the task is being created against. Hoping to have a lot more other small but helpful project and task fixes for you in the weeks ahead!