The General Data Protection Regulation (GDPR), introduced in 2018, includes the right for individuals to have their personal data erased on request. This is known as the ‘Right to be Forgotten’.
As Sytel software records personal data in a variety of forms, this topic has been provided to assist users of Softdial Contact Center™ (SCC) with removing all personal information, as required by GDPR law.
Individuals may apply to be forgotten from your system through either verbal or written requests. After receiving and recording these requests, companies have one month to respond to this request and ensure that the individual’s personal data has been entirely removed.
'Personal data' is described in the GDPR itself:
If a living individual can be identified from the data in your possession, then it qualifies as personal data. The data in question can relate to both a specific customer’s personal information, such as home telephone or address, to their business or professional information such as work phone extension and office location.
For further clarification of personal data, please visit the ico.org website.
The following section will explain
Be aware that as well as what is described here, the data may have also been saved in additional locations depending on other software interacting with it.
Data may need to be deleted from
It is recommended that:
- a technician who is skilled in the use of database SQL update or delete the required elements
- this is done outside of peak times as editing the database table may cause connectivity issues with the software and agents using it
In order to make calls, outbound campaigns access a table (or several tables) of customer data, known as a calling list, containing personal information which helps to refine the efficiency of a campaign. When a customer exercises their Right to be Forgotten, any personal information of theirs in the table(s) must be removed.
Follow the walk-through below to learn how to use a database management tool (such as MS Visual Studio, HeidiSQL, or similar) to
For the walk-through, we will use HeidiSQL to update/ delete data from the demo mobiles table provided on installation of SCC. This table is provided for training purposes and is based on fictitious people, so it is safe to update or delete data.
Fig. 2 - HeidiSQL - Session in Root Folder
A new session appears called Unnamed with its details in the panels to the right. For simplicity, we will leave this session as its default name.
As the location is dependent on the customer’s preferences, administrator access may be required to navigate to and edit the file.
For this walk-through, the server is local and there is no authentication access, so we can use the password root with the default settings.
Fig. 4 - HeidiSQL - New Session
This window displays the following:
At the top of the screen, the tabs of interest in this walk-through are;
This tab displays details for the table, including the column headings. Other fields control the type and amount of data that goes into each of the table’s fields. Reading the names of the headings for the table (Name column) will likely give you a good idea of which fields contain personal information and which do not; e.g. Forename and Surname certainly do, whilst Agent_Result does not.
Displays the table's data
Click on the Data tab.
Fig. 7 shows just some of the fields holding personal data that might be found in an SCC calling list. In the mobiles table, while the names given to the example contacts are comprehensible, the addresses are just random characters. By default, the list is ordered by its Key field, Contact_ID.
As the data is not editable through this screen, we will enter SQL commands via the last tab at the top of the page; Query.
The page is split into two horizontally:
SELECT * FROM Mobiles WHERE Forename = 'Wendy';
The following data is returned (Fig. 9).
We could query Forename Wendy and Surname Trevally:
SELECT * FROM Mobiles WHERE Forename = 'Wendy' AND Surname = 'Trevally';
But two results still appear (Fig. 10).
SELECT * FROM Mobiles WHERE Forename = 'Wendy' AND Surname = 'Trevally' AND Age = '106';
We have identified our correct customer as Contact_ID 2533.
SELECT * FROM Mobiles WHERE Contact_ID = 2533;
The result is a single record.
Next, we will update the record to remove personal data.
When editing a database, commands can either be entered individually or as part of a transaction. The advantage of a transaction is that you will be able to rollback the database to its state before the transaction was started. Here, we use a transaction:
START TRANSACTION;
This indicates to the program that
Next, we can do either of the following:
UPDATE Mobiles SET Forename = NULL WHERE Contact_ID = 2533;
This code tells the Mobiles database to update the details stored in the Forename field to NULL, (meaning empty/ no data), in every result where the Contact_ID field has a value of 2533. As mentioned previously, as we are using a key field’s value to locate our target, only one result will be matched.
SELECT * FROM Mobiles WHERE Contact_ID = 2533;
START TRANSACTION;
UPDATE Mobiles SET Forename = NULL WHERE Contact_ID = 2533;
SELECT * FROM Mobiles WHERE Contact_ID = 2533;
The Forename field for our specific customer is now (NULL) (Fig. 12).
Fig. 12 - HeidiSQL - After setting Forename
Although (NULL) is returned by the query, the field itself is completely empty, i.e. all the data of Wendy’s forename has been deleted from this database.
As shown in Fig. 12, having two of the same SELECT statements present before and after the UPDATE code will return two tabs along the bottom half of the screen; one for each result. By default, after the query has been run, the query result tab shown is pre-UPDATE (left tab); the post-UPDATE tab is on the right. Use these to compare the data and ensure that only the correct entry’s data has been changed.
ROLLBACK;
This will
This means that before doing another UPDATE, you will have to open a new transaction.
COMMIT;
This will
While a transaction is open, in order to prevent the data from changing, the database will be unable to connect to any outside source. Therefore, the shorter the time the transaction is open, the better.
Best practice for changing and/ or removing customers’ personal data from your databases is to note each request and perform them at the end of each working day.
If the customer is to be removed entirely from the database, the DELETE statement may be used rather than UPDATE.
Ensure that you test the data as mentioned in the 2) UPDATE the personal data fields section above, using the START TRANSACTION and ROLLBACK code, to avoid damaging the database.
To completely remove Wendy from the table:
DELETE FROM Mobiles WHERE Contact_ID = 2533;
Due to the way that database key fields function, the Contact_ID field will now appear to be missing row 2533, and key values, even if deleted, can never be repeated.
SCC allows calls (audio) to be recorded for company training and quality purposes, and legislative compliance. Therefore, for GDPR purposes, the following must be assessed for personal data, and edited/ deleted as necessary:
Any which include personal data must be updated/ deleted from the system.
The recordings table is created for each tenant when the first recording is made for that tenant. To edit this table, we must again use an SQL tool:
For the default tenant, the database is _default, as default is a reserved SQL keyword.
Note that there may be
The file locations shown in the SELECT query results are determined by 2 keys in the RecordMonitor.exe.config XML file:
As with calling list data, we can either
The SELECT query used in Editing the recordings table above may have resulted in up to
These contain the same identical conversation, but which of these is saved is determined by the following key in the Softdial Recording Monitor™ configuration file (RecordMonitor.exe.config, located by default in C:\Softdial\RecordMonitor):
If the key Compression is
The only way to identify whether or not a recording file contains personal information is to
Even if this key is commented out at the time of running the query, it may have been in operation at the time the recording was made, so the location should be checked, and files deleted if found.
Audit tables contain the outcomes and tags that can be assigned to each call attempt, which can be useful in understanding a customer’s habits.
For example, repeated calls over several periods that are marked as No Answer could indicate the customer is not typically home at that time. While this information may be useful to a call center, when a customer exercises their Right to be Forgotten, this information must be removed from the system, too.
The data is created and stored in the same database as the calling list (see calling list tables above). For this walk-through, in the sccdemo database, we will use the default table of audit0001 which is created when running the Mobiles demo campaign. This can be accessed using the HeidiSQL program as described above.
Fig. 13 - HeidiSQL - Audit table
Audit tables make use of the Index Keys feature. (Note the green key next to particular fields.) This means that the data in these fields has been indexed and can be used for fast retrieval based on other columns.
Fig. 15 - HeidiSQL - Audit Query
KEYVAL and PHONENUM are the only fields that contain personal data. The other data in the record (call outcome and other statistics) is used for reporting purposes.
While an outcome such as No Answer referring to a customer’s number may be inferring personal data (i.e. they are not present at their home phone to answer at certain times), this inference is removed when KEYVAL and PHONENUM are erased. Though the outcome would still be marked as No Answer, there is no way to identify the particular phone number.
Unlike the calling list (Mobiles) table, the audit0001 table has no primary key, being ordered by OUTCOMETIME by default. This means that it may not be possible to select only one entry to edit/ delete. However, searching for their KEYVAL or PHONENUM information will return all references to that personal information, which may then be edited/ deleted.
Next, we can either:
As with the code presented in the calling list tables section, use the UPDATE or DELETE queries, along with the recommended transaction codes to help prevent any errors.
In the following example, we will remove Jordan Chevis’ personal data (KEYVAL and PHONENUM) from the audit log while retaining the outcome information for further use.
To update the database:
START TRANSACTION;
UPDATE audit0001 SET PHONENUM = 0, KEYVAL = 0 WHERE PHONENUM = 01234000076;
SELECT * FROM audit0001 WHERE KEYVAL = 0;
Note that we are setting the values to 0 instead of NULL as the audit table we are using for this example does not allow values in these two fields to be NULL (see Fig. 13, Allow NULL column). This may be changed to allow NULL for the purposes of this example. However, future attempts will not adhere to this change and the table will have to be manually set to allow NULL each time.
To delete all rows containing the customer’s phone number, including the KEYVAL information and all the connection and outcome information noted during the call process, use the DELETE command:
DELETE FROM audit0001 WHERE PHONENUM = 01234000076;
As this removes the outcome information, it will affect the reporting processes and give slightly less accurate data.