Sitecore Analytics Database Manager (ADM) Module Customization
Recently I got the situation where I want to remove multiple contacts from xDB. I do not want to write my custom code.
Then I found Analytics Database Manager (ADM) 4.0.1 module in Marketplace, but it was not fulfilling my requirement because this module has only below options:
- Remove Historical Data: Removing all contacts and all related data without interactions after the specific date
- Rebuild Calculated Facet: Historcial rebuild of calculated facets
- Remove Single Contact Data: Removing single contact by ID or identifier
To fulfill my requirement, instead of creating a new tab for multiple contact removal, I did some minor change in Remove Single Contact Data.
- Open “AdmTaskPage.js” from this location “sitecore\shell\client\Your Apps\ADM\AdmTaskPage“
- Replace “removeContact” function from below code, to remove multiple contacts from xDB
removeContactByID: function (id) { jQuery.ajax({ type: "POST", url: "/sitecore/adm/client/StartContactDataRemovingById?contactId=" + id, success: function (result) { app.MessageBar2.addMessage("warning", result.replace(/^"(.+(?="$))"$/, '$1')); }, error: function (xhr, error, thrownError) { app.MessageBar1.addMessage("error", "The error occured with the following message '" + thrownError + "' Please check logs for details"); err = "yes"; } }); }, removeContact: function () { app.MessageBar2.removeMessages(); app.MessageBar2.set("expanded", "true"); app.ContactExpander.viewModel.show(); var running = app.checkIsRunning(); var enc = running.toString().replace(/[^a-zA-Z]+/g, ''); if (enc != "NotRunning") { app.MessageBar2.addMessage("warning", "The remove task can't be started while another one is running."); app.trigger("disable:ContactStatus"); return; } var err = "no"; if (app.IdentCheckBox.get("isChecked")) { app.MessageBar2.addMessage("warning", "Contact removing has been requested."); var ids=app.IdTextBox.get("text"); var list=ids.split('|'); for(var i=0;i<list.length;i++){ app.removeContactByID(list[i]); } } else { app.MessageBar2.addMessage("warning", "Contact removing has been requested."); jQuery.ajax({ type: "POST", contentType: 'application/json', data: JSON.stringify({ "source": app.SourceTextBox.get("text"), "identifier": app.IdentTextBox.get("text") }), url: "/sitecore/adm/client/StartContactDataRemoving", success: function (result) { app.MessageBar2.addMessage("warning", result.replace(/^"(.+(?="$))"$/, '$1')); if (result.indexOf("was not found") !== -1) { app.trigger("disable:ContactStatus"); app.trigger("enable:RemoveContact"); err = "yes"; } }, error: function (xhr, error, thrownError) { app.MessageBar1.addMessage("error", "The error occured with the following message '" + thrownError + "' Please check logs for details"); err = "yes"; } }); } if (err == "yes") { return; } app.trigger("disable:RemoveContact"); app.trigger("enable:ContactStatus"); },
var valid = app.validateGuid(id); if (!valid) { app.Label1.set("text", "entered contact ID is not a valid GUID"); return; }
- Do blank in “MaxLength: field
- Now I can add multiple contacts with pipeline separated like “F9F1F37A-6BCA-0000-0000-05AA3D2C0176|F9F1F37A-6BCA-0000-0000-05AA3D26BAF1|F9F1F37A-6BCA-0000-0000-05AA3D219161”
- Click “Yes” button, it will remove multiple contacts
Comments