Integration API

Overview

“GDPR API” is a library for Atlassian plugins "GDPR (DSGVO) and Security for Jira" and "GDPR (DSGVO) and Security for Confluence" (https://marketplace.atlassian.com/apps/1218962/gdpr-dsgvo-and-security-for-jira?hosting=server&tab=overview, https://marketplace.atlassian.com/apps/1219041/gdpr-dsgvo-and-security-for-confluence?hosting=server&tab=overview). The library  provides the API for integration with 3rd party apps and plugins for Jira and Confluence. Through this integration and using the library other plugins may extent anonymization functionality and clean-up some special content during the "User Anonymization process".

Anonymization architecture

Steps to build an integration

  1. Add “gdpr-api” library to pom.xml

  2. Implement IGDPRAnonymizer


pom.xml example:

<dependencies> <dependency> <groupId>de.actonic</groupId> <artifactId>gdpr-api</artifactId> <version>1.0.2</version> </dependency> </dependencies> ... <Export-Package> de.actonic.gdpr.api.*, </Export-Package> ... <DynamicImport-Package> de.actonic.jira.gdpr.api.*;resolution:="optional", </DynamicImport-Package>


Anonymization function implementation example:

package com.other.test.testGDPRApiPlugin; import java.util.*; import com.atlassian.jira.component.*; import de.actonic.gdpr.api.*; import org.springframework.beans.factory.*; import org.springframework.stereotype.*; @Component public class Anonymizer implements IGDPRAnonymizer, InitializingBean, DisposableBean { ... // class constructor and some other unnecessary parts are skipped ... @Override public List<GDPRAnonymizeObject> search(List<String> sourceUserKeys) { List<GDPRAnonymizeObject> anonymizeObjects = new ArrayList<>(); for (String sourceUserKey : sourceUserKeys) { ApplicationUser applicationUser = userManager.getUserByKey(sourceUserKey); if (applicationUser != null) { Collection<PortalPage> portalPages = portalPageManager.getAllOwnedPortalPages(applicationUser); for (PortalPage portalPage : portalPages) { anonymizeObjects.add(new GDPRAnonymizeObject(portalPage.getName(), "Dashboard", "/secure/Dashboard.jspa?selectPageId=" + portalPage.getId())); } } } return anonymizeObjects; } @Override public List<GDPRAnonymizeObject> anonymize(List<String> sourceUserKeys, String targetUserKey) { // here you anonymize all data by incoming parameters and return the result return null; } @Override public void stop() { // here you interrupt the search/anonymization process } @Override public String getPluginName() { return "Plugin #2"; } @Override public String getAnonymizerName() { return "User actions anonymizer"; } @Override public void afterPropertiesSet() throws Exception { IGDPRAnonymizeService anonymizeService = ComponentAccessor.getOSGiComponentInstanceOfType(IGDPRAnonymizeService.class); if (anonymizeService != null) { anonymizeService.addAnonymizer(this); } } @Override public void destroy() throws Exception { IGDPRAnonymizeService anonymizeService = ComponentAccessor.getOSGiComponentInstanceOfType(IGDPRAnonymizeService.class); if (anonymizeService != null) { anonymizeService.removeAnonymizer(this); } } }

How to check the integration

  1. Install the latest version of GDPR (DSGVO) and Security for Jira (https://marketplace.atlassian.com/apps/1218962/gdpr-dsgvo-and-security-for-jira?hosting=server&tab=overview)

  2. Install your app to the same server

  3. Open the “Data Cleaner” module https://%your-jira-server%/jira/secure/admin/actonic-gdpr-data-cleaner.jspa

  4. Find your app in the “Anonymization post-functions” list

  5. Try to search some personal content for a user, who is working with your app (check that your post function was selected)

  6. Look at the search results at https://%your-jira-server%/jira/secure/admin/actonic-gdpr-data-cleaner-results.jspa?templateId=-1

In case of any difficulties please contact us by https://actonic.atlassian.net/servicedesk/customer/portal/8