SlideShare ist ein Scribd-Unternehmen logo
1 von 50
Downloaden Sie, um offline zu lesen
DANIEL RAUF | SOFTWARE ENGINEER | ATLASSIAN
GDPR and Your Jira App
The User Who Must Not be Named:
GDPR at Scale
Sometimes 30 days is not enough
GDPR REQUEST AUTOMATION REPLY
GDPR IN JIRA SERVER
Other products
Bitbucket and Confluence
already support anonymization
Issues in Jira
Almost every database table is
(accidentally) full of personal
details
Easier from 8.4
With new user key generation
strategy, the data is better
contained
GDPR IN JIRA SERVER
Other products
Bitbucket and Confluence
already support anonymization
Issues in Jira
Almost every database table is
(accidentally) full of personal
details
Easier from 8.4
With new user key generation
strategy, the data is better
contained
GDPR IN JIRA SERVER
Other products
Bitbucket and Confluence
already support anonymization
Issues in Jira
Almost every database table is
(accidentally) full of personal
details
Easier from 8.4
With new user key generation
strategy, the data is better
contained
Transfer
ownership
Disable user Update user name
Remove data
User Anonymization Flow
Update user key
Change external id
Transfer
ownership
Disable user Update user name
Remove data
User Anonymization Flow
Update user key
Change external id
Transfer
ownership
Disable user Update user name
Remove data
User Anonymization Flow
Update user key
Change external id
Transfer
ownership
Disable user Update user name
Remove data
User Anonymization Flow
Update user key
Change external id
Transfer
ownership
Disable user Update user name
Remove data
User Anonymization Flow
Update user key
Change external id
WATCH OUT!
Change events
will not be fired,
so you might keep
using stale data
by accident
Transfer
ownership
Disable user Update user name
Remove data
User Anonymization Flow
Update user key
Change external id
YES
YES
YES
NOContains personal data
Needs an active owner
Visible/usable by other users NO
NO
TRANSFER OWNERSHIP
DELETE
DOINOTHING
UPDATEIKEY/NAME
START
#update
Perform the changes
Anonymization Handlers API
#getNumberOfTasks
Predict complexity
#getAffectedEntities
Inform admins about scope
#update
Perform the changes
Anonymization Handlers API
#getNumberOfTasks
Predict complexity
#getAffectedEntities
Inform admins about scope
#update
Perform the changes
Anonymization Handlers API
#getNumberOfTasks
Predict complexity
#getAffectedEntities
Inform admins about scope
Demo Time
tiny.cc/jira-gdpr
(https://bitbucket.org/atlassianlabs/anonymization-handlers-demo)
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-api</artifactId>
<version>${jira.version}</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<!-- recommend 8.4.0 or higher -->
<jira.version>8.3.0</jira.version>
<Import-Package>
<!-- Needed by Jira-specific anonymization handler -->
com.atlassian.jira.bc;resolution:="optional",
com.atlassian.jira.task.context;resolution:="optional",
com.atlassian.jira.user.anonymize;resolution:="optional",
com.atlassian.jira.util;resolution:="optional",
<!-- Anything else -->
*
</Import-Package>
YES
YES
YES
NOContains personal data
Needs an active owner
Visible/usable by other users NO
NO
TRANSFER OWNERSHIP
DELETE
DOINOTHING
UPDATEIKEY/NAME
START
public class WatchersAnonymizationHandler
implements UserAnonymizationHandler {
// ...
}
public class AnnouncementsAnonymizationHandler
implements OwnershipTransferHandler {
// ...
}
public class CommentsAnonymizationHandler
implements UserKeyChangeHandler {
// ...
}
<user-anonymization-handler
key=...
class=...
i18n-name-key=...>
<description>...</description>
</user-anonymization-handler>
<ownership-transfer-handler
...
</ownership-transfer-handler>
<user-key-change-handler
...
</user-key-change-handler>
<user-anonymization-handler
key=...
class=...
i18n-name-key=...>
<restrict application="jira" version=[8.3.0,)/>
<description>...</description>
</user-anonymization-handler>
<ownership-transfer-handler
...
</ownership-transfer-handler>
<user-key-change-handler
...
</user-key-change-handler>
@Override
public Collection<AffectedEntity>
getAffectedEntities(UserAnonymizationParameter parameter) {
final long count =
getNumberOfWatchedEntities(parameter.getUserKey());
if (count == 0) {
return Collections.emptyList();
}
return Collections.singletonList(AffectedEntity
.newBuilder(AffectedEntityType.REMOVE)
.descriptionKey(DESCRIPTION_KEY)
.numberOfOccurrences(count)
.build());
}
public class ErrorHandlingRunner {
T execute(Callable<T> callable) {
// ...
}
void executeAndUpdateProgress(Runnable runnable) {
// ...
}
ServiceResult getResult() {
// ...
}
}
@Override
public ServiceResult update(...) {
final ErrorHandlingRunner runner =
new ErrorHandlingRunner(...);
runner.executeAndUpdateProgress(() ->
ao.deleteWithSQL(
WatcherAO.class,
WATCHER_CLAUSE,
parameter.getUserKey()
)
);
return runner.getResult();
}
@Override
public ServiceResult update(...) {
final ErrorHandlingRunner runner = ...;
final Stream<AnnouncementAO> announcements =
runner.execute(() -> Arrays.stream(ao.find(
AnnouncementAO.class,
getPointOfContactQuery(ownerKey)))
);
if (announcements != null) {
announcements.forEach(announcement ->
updateAnnouncement(
newOnerKey, runner, announcement
)
);
}
return runner.getResult();
}
@Override
public ServiceResult update(...) {
final String original = parameter.getOriginal();
final String target = parameter.getTarget();
final ErrorHandlingRunner runner = ...;
runner.execute(() -> ao.stream(
CommentAO.class,
getAuthorQuery(original),
comment -> updateComment(
target, runner, comment.getID()
));
));
return runner.getResult();
}
@Override
public void updateComment(...) {
runner.executeAndUpdateProgress(() -> {
final CommentAO comment = ao.get(
CommentAO.class, commentId
);
if (comment == null) {
// log a warning and return
}
comment.setAuthor(newAuthorKey);
comment.save();
});
}
// watchers
public int getNumberOfTasks(...) {
return 1;
}
// announcements
public int getNumberOfTasks(...) {
return getNumberOfAnnouncements(...);
}
// comments
public int getNumberOfTasks(...) {
return getNumberOfComments(...);
}
// inside the backdoor plugin
public class AnonymizeBackdoor {
// uses AnonymizeUserService from jira-core
}
// inside integration-tests project
public class AnonymizeControl {
// calls the backdoor plugin via REST
}
// create comments using the backdoor
// ...
// anonymise the user
final AnonymizeResult result =
backdoor.anonymize().anonymizeUser(userKey);
final String newKey = result.getNewUserKey();
// assert that comments got updated
assertThat(
backdoor.comments().getCommentsByAuthor(userKey).size,
equalTo(0)
);
assertThat(
backdoor.comments().getCommentsByAuthor(newKey),
containsInAnyOrder(comment1, comment2, ...)
);
// disable feature flag to create user keys like before
backdoor.darkFeatures().disableForSite(
FeatureFlag.featureFlag(
DB_ID_BASED_KEY_GENERATION_STRATEGY.featureKey()
)
);
// use users from the default data set
@RestoreBlankInstance
// ...
backdoor
.usersAndGroups()
.getUserByName("fred")
.getKey();
// use users from your own XML backup
@Restore("some_file.xml")
Summary
Fill in the implementation
Always consider performance in
getAffectedEntities, and memory
usage in update method
Make sure it works
Create integration tests to make sure
everything works fine
Choose handler type(s)
Decide which handlers, if any, you
need to implement
Register them
Tip: start by throwing exceptions from
every method and see if they appear
in the UI
DANIEL RAUF | SOFTWARE ENGINEER | ATLASSIAN
Thank you!

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

What Does Jira Next-Gen Mean for Cloud Apps?
What Does Jira Next-Gen Mean for Cloud Apps?What Does Jira Next-Gen Mean for Cloud Apps?
What Does Jira Next-Gen Mean for Cloud Apps?
 
Supercharge Your Pages - New Ways to Extend the Confluence Editor
Supercharge Your Pages - New Ways to Extend the Confluence EditorSupercharge Your Pages - New Ways to Extend the Confluence Editor
Supercharge Your Pages - New Ways to Extend the Confluence Editor
 
Discover the Possibilities of the Jira Cloud Asset API
Discover the Possibilities of the Jira Cloud Asset APIDiscover the Possibilities of the Jira Cloud Asset API
Discover the Possibilities of the Jira Cloud Asset API
 
The New & Improved Confluence Server and Data Center
The New & Improved Confluence Server and Data CenterThe New & Improved Confluence Server and Data Center
The New & Improved Confluence Server and Data Center
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Spec-first API Design for Speed and Safety
Spec-first API Design for Speed and SafetySpec-first API Design for Speed and Safety
Spec-first API Design for Speed and Safety
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Serverless Analytics and Monitoring For Your Cloud App
Serverless Analytics and Monitoring For Your Cloud AppServerless Analytics and Monitoring For Your Cloud App
Serverless Analytics and Monitoring For Your Cloud App
 
From AUI to Atlaskit - Streamlining Development for Server & Cloud Apps
From AUI to Atlaskit - Streamlining Development for Server & Cloud AppsFrom AUI to Atlaskit - Streamlining Development for Server & Cloud Apps
From AUI to Atlaskit - Streamlining Development for Server & Cloud Apps
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Practical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version AppPractical Patterns for Developing a Cross-product Cross-version App
Practical Patterns for Developing a Cross-product Cross-version App
 
Declaring Server App Components in Pure Java
Declaring Server App Components in Pure JavaDeclaring Server App Components in Pure Java
Declaring Server App Components in Pure Java
 
Leaning into Server to Cloud App Migration
Leaning into Server to Cloud App MigrationLeaning into Server to Cloud App Migration
Leaning into Server to Cloud App Migration
 
Designing and Running a GraphQL API
Designing and Running a GraphQL APIDesigning and Running a GraphQL API
Designing and Running a GraphQL API
 
Creating Your Own Server Add-on that Customizes Confluence or JIRA
Creating Your Own Server Add-on that Customizes Confluence or JIRACreating Your Own Server Add-on that Customizes Confluence or JIRA
Creating Your Own Server Add-on that Customizes Confluence or JIRA
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Scaling Indexing and Replication in Jira Data Center Apps
Scaling Indexing and Replication in Jira Data Center AppsScaling Indexing and Replication in Jira Data Center Apps
Scaling Indexing and Replication in Jira Data Center Apps
 
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fastHow Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
 
Launch into New Markets with JIRA Service Desk
Launch into New Markets with JIRA Service DeskLaunch into New Markets with JIRA Service Desk
Launch into New Markets with JIRA Service Desk
 
Ten Battle-Tested Tips for Atlassian Connect Add-ons
Ten Battle-Tested Tips for Atlassian Connect Add-onsTen Battle-Tested Tips for Atlassian Connect Add-ons
Ten Battle-Tested Tips for Atlassian Connect Add-ons
 

Ähnlich wie The User Who Must Not be Named: GDPR and Your Jira App

Turmeric SOA - Security and Policy
Turmeric SOA - Security and PolicyTurmeric SOA - Security and Policy
Turmeric SOA - Security and Policy
kingargyle
 
Security Quick Tour
Security Quick TourSecurity Quick Tour
Security Quick Tour
Active Base
 
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012 Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Atlassian
 
Vpd Virtual Private Database By Saurabh
Vpd   Virtual Private Database By SaurabhVpd   Virtual Private Database By Saurabh
Vpd Virtual Private Database By Saurabh
guestd83b546
 
Addmi 06-security mgmt
Addmi 06-security mgmtAddmi 06-security mgmt
Addmi 06-security mgmt
odanyboy
 

Ähnlich wie The User Who Must Not be Named: GDPR and Your Jira App (20)

Turmeric SOA - Security and Policy
Turmeric SOA - Security and PolicyTurmeric SOA - Security and Policy
Turmeric SOA - Security and Policy
 
Skyrocketing Web APIs
Skyrocketing Web APIsSkyrocketing Web APIs
Skyrocketing Web APIs
 
Actonic GDPR Tools for Jira
Actonic GDPR Tools for JiraActonic GDPR Tools for Jira
Actonic GDPR Tools for Jira
 
How to Build a Better JIRA Add-on
How to Build a Better JIRA Add-onHow to Build a Better JIRA Add-on
How to Build a Better JIRA Add-on
 
dynaTrace Ajax Edition @ Yahoo
dynaTrace Ajax Edition @ YahoodynaTrace Ajax Edition @ Yahoo
dynaTrace Ajax Edition @ Yahoo
 
Dynamic Data Masking - Breakthrough Innovation in Application Security
Dynamic Data Masking - Breakthrough Innovation in Application SecurityDynamic Data Masking - Breakthrough Innovation in Application Security
Dynamic Data Masking - Breakthrough Innovation in Application Security
 
Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)
Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)
Tips on Securing Drupal Sites - DrupalCamp Atlanta (DCA)
 
Managing enterprise applications, permissions, and consent in Azure Active Di...
Managing enterprise applications, permissions, and consent in Azure Active Di...Managing enterprise applications, permissions, and consent in Azure Active Di...
Managing enterprise applications, permissions, and consent in Azure Active Di...
 
Managing enterprise applications, permissions, and consent in Azure Active Di...
Managing enterprise applications, permissions, and consent in Azure Active Di...Managing enterprise applications, permissions, and consent in Azure Active Di...
Managing enterprise applications, permissions, and consent in Azure Active Di...
 
Security Quick Tour
Security Quick TourSecurity Quick Tour
Security Quick Tour
 
Android Froyo
Android FroyoAndroid Froyo
Android Froyo
 
Hands on SPA development
Hands on SPA developmentHands on SPA development
Hands on SPA development
 
Additional license authorizations
Additional license authorizationsAdditional license authorizations
Additional license authorizations
 
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012 Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
Plugins on OnDemand with Remote Apps - Atlassian Summit 2012
 
Vpd Virtual Private Database By Saurabh
Vpd   Virtual Private Database By SaurabhVpd   Virtual Private Database By Saurabh
Vpd Virtual Private Database By Saurabh
 
Addmi 06-security mgmt
Addmi 06-security mgmtAddmi 06-security mgmt
Addmi 06-security mgmt
 
Modern authentication in Sling with Openid Connect and Keycloak - Adapt.to 20...
Modern authentication in Sling with Openid Connect and Keycloak - Adapt.to 20...Modern authentication in Sling with Openid Connect and Keycloak - Adapt.to 20...
Modern authentication in Sling with Openid Connect and Keycloak - Adapt.to 20...
 
Product Keynote: Server and Data Center
Product Keynote: Server and Data CenterProduct Keynote: Server and Data Center
Product Keynote: Server and Data Center
 
CoLabora March 2022 - Improve security posture by implementing new Azure AD ...
CoLabora March 2022 -  Improve security posture by implementing new Azure AD ...CoLabora March 2022 -  Improve security posture by implementing new Azure AD ...
CoLabora March 2022 - Improve security posture by implementing new Azure AD ...
 
OTech magazine article - Principle of Least Privilege
OTech magazine article - Principle of Least PrivilegeOTech magazine article - Principle of Least Privilege
OTech magazine article - Principle of Least Privilege
 

Mehr von Atlassian

Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
Atlassian
 

Mehr von Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 
Shipping With Velocity and Confidence Using Feature Flags
Shipping With Velocity and Confidence Using Feature FlagsShipping With Velocity and Confidence Using Feature Flags
Shipping With Velocity and Confidence Using Feature Flags
 
Build With Heart and Balance, Remote Work Edition
Build With Heart and Balance, Remote Work EditionBuild With Heart and Balance, Remote Work Edition
Build With Heart and Balance, Remote Work Edition
 
How to Grow an Atlassian App Worthy of Top Vendor Status
How to Grow an Atlassian App Worthy of Top Vendor StatusHow to Grow an Atlassian App Worthy of Top Vendor Status
How to Grow an Atlassian App Worthy of Top Vendor Status
 
Monitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
Monitoring As Code: How to Integrate App Monitoring Into Your Developer CycleMonitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
Monitoring As Code: How to Integrate App Monitoring Into Your Developer Cycle
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

The User Who Must Not be Named: GDPR and Your Jira App