When it was first introduced into Office 365 in 2015, Microsoft gave Delve a lot of publicity, perhaps because it was the application that demonstrated the value of collecting and interpreting signals in the Office Graph (now Microsoft Graph). Now, Delve doesn’t get so much attention. One reason why this might be so is that the focus for search has shifted to the Microsoft Search initiative. The new direction was loudly trumpeted at Ignite 2018 and has reached parts of Office 365, but not my tenant.
Delve is Great at Finding Documents
Delve is an application that some people get and others ignore. It is invaluable if you’re like me and constantly forget where documents might be stored, but if you’re happy enough to use the search features built into Outlook, SharePoint, and OneDrive for Business, you might never go near Delve. This is especially so if you do a lot of work in Teams because Delve ignores Teams.
Delve Settings
Like most other Office 365 apps, the cogwheel icon exposes some settings to control how Delve works. The most important of the Feature settings is the one controlling whether Delve shows other users documents created by the user that Delve considers to be “of interest” to them. If you don’t want your documents showing up in other peoples’ Delve dashboards, you should disable this setting.
Delve Feature settings
Delve’s Two New Export Settings
The Documents setting and those controlling if you want to use MyAnalytics (now available to all Office 365 E3 users) and receive a weekly email digest about your activities have existed for a while and are reasonably well know. What’s interesting is that two new settings have appeared at the bottom of the list. These choices allow the user to export data from Delve and seem to have been added as a result of GDPR. At least, that’s what you might conclude from the URL used for the pages that display exported data (in my case, https://eur.delve.office.com/GdprExport.aspx?datatype=delvedata).
The two options are to Export data from Delve and Export list of relevant documents. The former exports your favorites and settings information from Delve including boards, people, and documents. The latter lists the set of documents that the Office Graph considers most relevant to the user.
The Meaning of Export
In the mind of most, “Export” implies that data is neatly extracted from a source and packaged into a form that it can be taken and used elsewhere. In the case of these export options, Delve displays a web page full of JSON-formatted information. For instance, here’s the totally understandable extract about a board used to classify items in Delve.
And here’s what you see about a relevant document. As you can see, the information is as clear as daylight unless you are fluent in JSON and communicate in this format:
You can export the content by copying it and pasting it into somewhere more reasonable, like a Word document. But in reality, this rudimentary implementation smacks of being done with the least possible effort to be able to say that Delve complies with the need under GDPR to extract all personal information from Office 365 should someone ask for it in an Article 15 Data Subject Request (DSR). The DSR functionality available in the Office 365 Security and Compliance Center doesn’t include Delve data (it also misses Yammer), so you have to take some manual steps to ensure that all possible data is exported to meet a DSR.
We cover Delve in Chapter 9 of the Office 365 for IT Pros eBook. We also have quite a lot to say about GDPR DSRs, but that content is in Chapter 20.
3 Replies to “Exporting User GDPR Data From Delve”
Tony, thanks for the coverage / analysis above. A couple of thoughts as I read what you wrote:
– since this is an end user driven process – done by a user for their data – I don’t view it as part of an organisation responding to a GDPR DSR. That should be an organisation-level process, done by someone other than the requestor of the data access request.
– since Delve surfaces signals and points at interesting / potentially relevant content, I think the export design is fine. It shows the signals and the reasoning, not the content directly.
– another requirement under GDPR is for the right of data portability. As I read your analysis above, I wonder if this is what the export process is getting at. It’s in a machine-readable format (as is recommended by GDPR) and it includes the signals. How useful this would be when transferred to another service, though, is the larger question.
While an admin can cope with JSON, don’t you think that a user deserves to have something more usable output? By all means keep the JSON if that makes it easier to take the data elsewhere (as you point it, there’s probably not much hope of that), but also give something more usable – like output to a CSV file in formatted columns.
Maybe. But it depends on what it has to be used for. If it is to be read by the user – this document and that document are potentially useful to me – then agreed, the output format should be more user readable. But if it is an attempt to cover the right of data portability, machine-readable is the requirement / standard, so I’m indifferent / think what’s given is fine.
{"id":null,"mode":"button","open_style":"in_modal","currency_code":"EUR","currency_symbol":"\u20ac","currency_type":"decimal","blank_flag_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/office365itpros.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":100,"top_media_type":"featured_image","featured_image_url":"https:\/\/office365itpros.com\/wp-content\/uploads\/2022\/11\/cover-141x200.jpg","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Virtual Tip Jar","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Office 365 for IT Pros","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Office 365 for IT Pros","form_subtitle":null,"currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you for supporting the work of Office 365 for IT Pros!","payment_confirmation_title":"Office 365 for IT Pros","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":null,"terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
Tony, thanks for the coverage / analysis above. A couple of thoughts as I read what you wrote:
– since this is an end user driven process – done by a user for their data – I don’t view it as part of an organisation responding to a GDPR DSR. That should be an organisation-level process, done by someone other than the requestor of the data access request.
– since Delve surfaces signals and points at interesting / potentially relevant content, I think the export design is fine. It shows the signals and the reasoning, not the content directly.
– another requirement under GDPR is for the right of data portability. As I read your analysis above, I wonder if this is what the export process is getting at. It’s in a machine-readable format (as is recommended by GDPR) and it includes the signals. How useful this would be when transferred to another service, though, is the larger question.
While an admin can cope with JSON, don’t you think that a user deserves to have something more usable output? By all means keep the JSON if that makes it easier to take the data elsewhere (as you point it, there’s probably not much hope of that), but also give something more usable – like output to a CSV file in formatted columns.
Maybe. But it depends on what it has to be used for. If it is to be read by the user – this document and that document are potentially useful to me – then agreed, the output format should be more user readable. But if it is an attempt to cover the right of data portability, machine-readable is the requirement / standard, so I’m indifferent / think what’s given is fine.