Offline case transfers
Cases inside a case management dataset on SurveyCTO Collect can be transferred from one Android device to another without a connection to the Internet. This adds a great degree of flexibility to SurveyCTO's support for case management, making it ideal for situations where survey sampling happens in the field and generates new cases, or where caseworkers need to be able to refer cases to colleagues — all offline. These are just two examples.
Offline case transfers leverage Android's Nearby Share feature to transfer one or more cases from one device to another. The new cases will then appear on the receiving device's case list, along with all finalized forms for that case (so new case data will also be available for pre-loading.
When to transfer a case offline
When Collect synchronizes with the server, it receives a local copy of the full cases dataset, which can be filtered for individual assignments as per the case management documentation. However, when the local copy of the case list on a device is updated locally (not from the server), a user may want to transfer those changes to another device. For example, new cases or locally updated versions of pre-existing cases can be transferred to another device so another enumerator can work with that case.
In order to have local cases dataset changes to share with other devices, you must first enable offline server dataset publishing. Cases datasets are like other datasets and can be used for both form data publishing and pre-loading data into forms. Update case data locally by filling out and finalizing any form that's been configured to publish data into the cases dataset. A single filled-out form can update or create one or more cases (read about "long" format publishing in Publishing form data into server datasets).
Requirements of offline case transfers
Offline case transfers have a few requirements which must be met by Collect on both devices:
Devices must support Nearby Share.
Collect 2.80+ must be installed.
Be signed into the same server (if you use different workspaces, be sure to open the right workspace).
Offline case transfers should be enabled: from the main Collect menu, tap the three-dot menu in the upper-right, choose Admin Settings, and then enable Offline case transfers.
The Manage Cases menu should also be enabled from Admin Settings (also a general requirement for case management).
All blank forms associated with the case management data collection workflow must be downloaded (also required for case management to work).
The user role(s) of the logged-in user(s) must use the same cases dataset ID.
The cases dataset must be attached to at least one form in your case management data collection workflow (so that it is downloaded as a server dataset).
How to transfer a case
Follow these steps to transfer a case offline between two Android devices:
Open Manage Cases on both devices and tap on the three-dot menu in the upper-right.
Inside the menu, choose Send cases to device on device A and Receive cases from device on device B.
The sender will pick one or more cases from the list and tap on the Next button.
The Nearby Share menu will appear and display potential receiving devices. Note the name that is assigned to the sending device in the menu, with the status indicator which says "Connecting…" below it.
Wait a few moments and see the name of the receiving device appearing below the name of your device (It may help to confirm the name of the receiving device in its own Nearby Sharing menu).
Tap on the name of the device you want to transfer to.
The receiving device will display a message in response that says that the sender "wants to connect". Tap on the Connect button to agree or the Decline button to reject the connection.
If successful, the transferred case(s) will appear on the receiving device.
Locating transferred cases
Keep in mind that case assignments based on roles, users, and enumerators will still apply to transferred cases. So if a case is transferred, but it is not visible on the receiving end, this might be because that case was not assigned to the receiver.
With existing cases, you will need to consider who the case is currently assigned to and how to reassign it before transferring it. With server dataset publishing, any property of a case aside from the id (including the current roles, users, and enumerators values) can be updated locally using offline server dataset publishing. One strategy is to create an admin form that can be used to update case assignment data before offline case transfer takes place.
Whatever you do, we suggest that cases intended for offline transfer are assigned to the intended recipient (these cases will appear in the default Local Changes view while transferring cases even though they may not appear when viewing the case list otherwise).
Choosing a case to transfer
By default, when you transfer cases offline in the field, the list of cases you can transfer will only include cases with local changes. A local change is a change to the cases dataset which is generated on Collect (locally) as opposed to being received from the server (remotely.)
However, you can also transfer cases without local changes. From the Manage Cases menu, tap the three-dot icon in the upper-right, tap Send cases to device, and select Change View. From there you can choose between:
Cases with local changes,
My cases to view all cases assigned to the current enumerator/user/user role (as in the case management documentation), and
All cases to view the full, unfiltered case list.
Even if a case has no local changes it might still make sense to transfer it. If device A has synchronized with the server more recently than device B, device A could be used to update device B's local copy of the case list. Simply change the view to All cases, and pick a few (or all) cases to transfer. As per the case management documentation, enumerators only see cases which are assigned to them individually or globally assigned, so it is not necessarily a bad idea to transfer all cases.
Offline updates to server datasets resulting from offline case transfers are limited to the cases dataset. Non-case datasets on the receiving side will not be updated even though finalized form(s) transferred as part of a case may have been configured to publish into them. For this reason, ensure that you use the cases dataset to pass data between forms (so that your data collection workflow behaves as expected when transferring cases offline).