Background
Users who have access to the Archive Widget also have access to all the archived data. Archive does not follow the Salesforce Data Security Model.
How to display Archive Widget on Community?
In order to achieve this, Archive has an option to use the Data Query SDK. To display in the community, the customer's dev team needs to develop a component that can present the JSON results of the SDK Data Query.
Example Use Case
The customer is using Customer Community and would like to present archived tasks that are marked as external to his customers. In this case, Task, a standard object, has a standard field that marks these specific external tasks: IsVisibleInSelfService.
To solve this use case, you can create the following Data Query SDK:
// Define the query on Task string objectName = ‘Task’; list<OB_Archiver.SearchFilter> request = new list<OB_Archiver.SearchFilter>(); OB_Archiver.SearchFilter filter1 = new OB_Archiver.SearchFilter(IsVisibleInSelfService, ‘true’); request.add(filter1); // Recommended - define date range, last 90 days OB_Archiver.DateRange range = new OB_Archiver.dateRange('CreatedDate', system.today()-90,system.today()); list<string> fields = new list<string>{'Name', 'Id', 'Subject', 'Status'}; OB_Archiver.ArchiverAccessorResponse res = OB_Archiver.ArchiverAccessor.performArchiverGlobalSearch(objectName, request, fields, range); // Check success if(res.getStatusCode() == 200){ // debug - optional system.debug('code: ' + res.getStatuscode()); OB_Archiver.ArchiverAccessorSearchResponse searchResponse = res.getSearchResponseMap(); // debug - optional system.debug('count: '+ searchResponse.totalResultCount); system.debug('scrollid:'+ searchResponse.scrollId); system.debug('list size:'+ searchResponse.records.size()); string scrollId = searchResponse.scrollId; integer page = 1; while(scrollId != '-1'){ page++; OB_Archiver.ArchiverAccessorResponse secondPage = OB_Archiver.ArchiverAccessor.getNextPage(searchResponse.scrollId); if(secondPage.getStatusCode() == 200){ OB_Archiver.ArchiverAccessorSearchResponse searchResponse2 = secondPage.getSearchResponseMap(); scrollId = searchResponse2.scrollId; system.debug('count: '+ searchResponse2.totalResultCount); system.debug('scrollid:'+ searchResponse2.scrollId); system.debug('list size:'+ searchResponse2.records.size()); system.debug('page number: '+ page); } else{ system.debug('response is != 200: '+ secondPage.getStatusCode()); system.debug('body: '+ secondPage.getBody()); break; } }} else{ system.debug('status code erorr|: '+ res.getStatusCode()); system.debug('status code message|: '+ res.getErrorMessage()); }
This code will return a JSON with the results of the Tasks that are visible externally.