Script Exact Online Backup & Recovery

Summary

This note takes an empirical view on actual Exact Online user-managed backup use by accountants and entrepreneurs. Based on a sample of over 700 companies user-managed backups are interacted seldom with. Recovery is even more rare with only five registered cases in the last five calendar years.

It seems that users consider the user-managed backups of little value despite prominent placement in the menu.

Exact Online Backups

Exact Online offers end-users the capability to create up to three independent snapshots from the current company and restore it at a later moment. These snapshots are called “backups”. The snapshots are managed by Exact Online.

This post explains the steps to automate the backup and recovery procedure during acceptance testing.

Word of precaution: backup and recovery are very resource-intensive operations. Therefore the functionality is available only to customers and consultants after additional agreements have been made to avoid running daily mass backups.

Script Backup and Recovery

The following Invantive SQL steps represent a backup, change and recovery scenario:

--
-- Select an Exact Online company to be backed up.
-- You would be able to select and backup multiple companies in one go,
-- but that would consume too many resources.
--
use 868041

--
-- Ensure that the disk and memory cache are deactivated
-- so the count(*) on tasks represents the actual
-- live situation.
--
set use-http-disk-cache@eol false

set use-http-memory-cache@eol false

select count(*) from tasks
--
-- Result: 8 rows
--

--
-- Create a backup in slot 3.
--
update backups@eol set actionrequested='B' where slotnumber = 3

--
-- Runs few minutes. Wait till completed and check status.
--
select * from backups where slotnumber = 3
--
-- Size is 151 MB, created few minutes ago. Status is empty text.
--

--
-- Change something, test some new software, etc.
--
insert into tasks@eol(description) values ('Test backup')

--
-- Check that something has changed in Exact Online company.
--
select count(*) from tasks
--
-- Result: 9 rows
--

--
-- Wait 5 minutes to avoid a "Company blocked due to backup or conversion" error.
--
-- Note that during recovery the number of rows from the API will be 0 at some point in time.
--
-- Now run a restore:
--
update backups set actionrequested='R' where slotnumber = 3

--
-- Check that the original data is present again.
--
select count(*) from tasks
--
-- Result: 8 rows
--