SlideShare ist ein Scribd-Unternehmen logo
1 von 51
Downloaden Sie, um offline zu lesen
Take action with
triggers
TOMEK SROKA | SOFTWARE DEVELOPER | ATLASSIAN
AUTOMATION
Deployment &
Observability
Authentication &
Authorization
Infrastructure
Connect & 3LO apps
Forge UI
Forge
Developer ExperienceAtlassian Hosting
Agenda
A case for automation
Anatomy of a Forge App
Under the covers
Demo
Product triggers
Web triggers
Platform Services
Stargate

api.atlassian.com, 3LO, rate limiting
Streamhub

Distributed event bus
ALERT IN OPSGENIE
Acknowledge
On-call must acknowledge within
15 minutes or alert will be escalate
IT SUPPORT
IT SUPPORT
IT Support
APP FEATURES
• Tickets should be automatically assigned to a person
currently on-call.

• If the ticket is about a problem with a service and
severity is critical, then a person on-call should be
alerted.

• When an on-call person acknowledges an alert, ticket
should be commented
ASSIGNING ISSUE
Getting started with Forge
Node.js 12+ NPM
Prerequisites
$ npm install -g @atlassian/forge-cli
$ forge login
$ forge create
Agenda
A case for automation
Anatomy of a Forge App
Under the covers
Demo
Product triggers
Web triggers
Forge
Application
Manifest
Functions
Lifecycle
app:
id: ari:cloud:ecosystem::app/1234
name: forge-example-app
description: forge example app
modules:
function:
- key: example-function
handler: index.run
trigger:
- key: jira-event-created
function: example-function
events:
- created:issue
Forge
Application
Manifest
Functions
Lifecycle
export async function run(event, context) {
console.log(`Hello from example App!`);
return {
"message": "hello world"
};
}
index.js:
modules:
function:
- key: example-function
handler: index.run
manifest.yml:
Forge
Application
Manifest
Functions
Lifecycle
Functions can be written in anything
that compiles to JavaScript
Executed in constrained
environment
Runtime provides some basic
building blocks
Forge
Application
Manifest
Functions
Lifecycle
dev-1.atlassian.net
dev-2.atlassian.net
my-company.atlassian.net
$ forge install
Forge
Application
Manifest
Functions
Lifecycle
Development Staging Production
Ver 5 Ver 4 Ver 3 stable
pre-prod.atlassian.net
dev-1.atlassian.net
dev-2.atlassian.net
my-company.atlassian.net
Agenda
A case for automation
Anatomy of a Forge App
Under the covers
Demo
Product triggers
Web triggers
Product triggers
Created issue
Modified issue
Transitioned issue
…
Created paged
Modified page
Commented page
…
Event bus
TRIGGER SERVICE
Event types
CREATED:ISSUE
ASSIGNED:ISSUE
DELETED:ISSUE UPDATED:ISSUE
TRANSITIONED:ISSUE
VIEWED:ISSUE
UNASSIGNED:ISSUE
COMMENTED:COMMENT
VIEWED:PAGE
TRANSITIONED:TASK
PUBLISHED:PAGE
UNASSIGNED:TASK
COMMENTED:COMMENT
LIKED:PAGE
DELETED:TASK
ASSIGNED:TASK
DELETED:PAGEEDITED:PAGE
{
"accountId": "501011:5ba7990e-ae0f-40de-afcc-a92ed2aca3e2",
"activityItem": {
"timestamp": "2019-08-27T09:22:21.303Z",
"eventType": "CREATED",
"object": {
"localResourceId": "120342",
"name": "AUT-1 Onboarding request",
"type": "ISSUE",
"product": "JIRA_SERVICE_DESK",
"cloudID": "158c8204-ff3b-47c2-adbb-a0906c00ffee",
"url": "https://product-fabric.atlassian.net/browse/AUT-1",
"iconURL": "https://atlassian.net/secure/viewavatar?avatarId=10310"
Event Format
{
"accountId": "501011:5ba7990e-ae0f-40de-afcc-a92ed2aca3e2",
"activityItem": {
"timestamp": "2019-08-27T09:22:21.303Z",
"eventType": "CREATED",
"object": {
"localResourceId": "120342",
"name": "AUT-1 Onboarding request",
"type": "ISSUE",
"product": "JIRA_SERVICE_DESK",
"cloudID": "158c8204-ff3b-47c2-adbb-a0906c00ffee",
"url": "https://product-fabric.atlassian.net/browse/AUT-1",
"iconURL": "https://atlassian.net/secure/viewavatar?avatarId=10310"
Event Format
{
"accountId": "501011:5ba7990e-ae0f-40de-afcc-a92ed2aca3e2",
"activityItem": {
"timestamp": "2019-08-27T09:22:21.303Z",
"eventType": "CREATED",
"object": {
"localResourceId": "120342",
"name": "AUT-1 Onboarding request",
"type": "ISSUE",
"product": "JIRA_SERVICE_DESK",
"cloudID": "158c8204-ff3b-47c2-adbb-a0906c00ffee",
"url": "https://product-fabric.atlassian.net/browse/AUT-1",
"iconURL": "https://atlassian.net/secure/viewavatar?avatarId=10310"
},
"containers": [
{
Event Format
"product": "JIRA_SERVICE_DESK",
"cloudID": "158c8204-ff3b-47c2-adbb-a0906c00ffee",
"url": "https://product-fabric.atlassian.net/browse/AUT-1",
"iconURL": "https://atlassian.net/secure/viewavatar?avatarId=10310"
},
"containers": [
{
"localResourceId": "158c8204-ff3b-47c2-adbb-a0906c00ffee",
"type": "SITE",
"product": "JIRA_SERVICE_DESK",
"cloudID": "158c8204-ff3b-47c2-adbb-a0906c00ffee",
"url": "https://product-fabric.atlassian.net"
},
{
"localResourceId": "13011",
"name": "Automation Test Project",
Event Format
"type": "SITE",
"product": "JIRA_SERVICE_DESK",
"cloudID": "158c8204-ff3b-47c2-adbb-a0906c00ffee",
"url": "https://product-fabric.atlassian.net"
},
{
"localResourceId": "13011",
"name": "Automation Test Project",
"type": "PROJECT",
"product": "JIRA_SERVICE_DESK",
"cloudID": "158c8204-ff3b-47c2-adbb-a0906c00ffee",
"url": "https://product-fabric.atlassian.net/projects/AUT"
}
],
"contributors": [
{
Event Format
"product": "JIRA_SERVICE_DESK",
"cloudID": "158c8204-ff3b-47c2-adbb-a0906c00ffee",
"url": "https://product-fabric.atlassian.net/projects/AUT"
}
],
"contributors": [
{
"profile": {
"accountId": "501011:5ba7990e-ae0f-40de-afcc-a92ed2aca3e2"
},
"lastAccessedDate": "2019-08-27T09:22:21.303Z",
"count": 1
}
]
}
}
Event Format
Opsgenie - making a request
// Use environment variables to get API TOKEN, never hardcode such
things.
const scheduleId = getEnvVariable("OPSGENIE_SCHEDULE_ID");
const opsGenieApiKey = getEnvVariable("OPSGENIE_API_KEY");
console.log(`Looking for on-call person for schedule ${scheduleId}
`);
const onCallEmail = await fetchOnCall(scheduleId, opsGenieApiKey);
console.log(`Determined on-call person email to be ${onCallEmail}`);
// If we did not get an email from opsgenie then too bad; What can
we do?
if (onCallEmail === null) {
return {};
}
async function fetchOnCall(scheduleId: string, apiKey: string) {
const url = `https://api.opsgenie.com/v2/schedules/${scheduleId}/
on-calls?flat=true`;
let response = await api.fetch(url, {
method: "GET",
headers: {
"Authorization": `GenieKey ${apiKey}`
}
});
if (!response.ok) {
throw `Cannot get opsgenie schedule. Status: $
{response.status}, ${response.statusText}`;
}
const responseBody = await response.json();
[…]
}
Opsgenie - making a request
Jira - making a request
export async function assignJiraIssue(issueId: string, userId: string) {
const url = `/rest/api/3/issue/${issueId}/assignee`;
const body = {
"accountId": userId
};
let response = await api
.asApp()
.requestJira(url, {
method: "PUT",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify(body)
});
[…]
}
Agenda
A case for automation
Anatomy of a Forge App
Under the covers
Demo
Product triggers
Web triggers
Web triggers
+ OTHERS
https://app.hello.atlassian-dev.net/x0/eyJjd
TRIGGER SERVICE
Request
{
"method": "POST",
"headers": {
"content-type": [
"application/json"
]
},
"body": “{"id":"123"}",
"path": "/x0/eyJjdHg"
}
Response
{
"headers": {
"Content-Type": [
"text/plain"
]
},
"statusCode": 200,
"body": "Hello from web trigger"
}
Example function
export async function run(request) {
return {
headers: {
"Content-Type": ["text/plain"]
},
statusCode: 200,
body: `Hello from web trigger.n ${request.body}`
}
}
Manifest
modules:
function:
- key: func-pr-created
handler: index.onNewPr
webtrigger:
- key: github-pr-created
function: func-pr-created
Generating URL
Opsgenie - webhook
Agenda
A case for automation
Anatomy of a Forge App
Under the covers
Demo
Product triggers
Web triggers
Triggering self
Commented:issue Event bus
POST /issue/comment
TRIGGER SERVICE
Out of order
processing
DuplicatesDelays
Working with Product Triggers
3 1 2
AUTHENTICATING
WEB TRIGGERS
Agenda
A case for automation
Anatomy of a Forge App
Under the covers
Demo
Product triggers
Web triggers
Thank you!
TOMEK SROKA | SOFTWARE DEVELOPER | ATLASSIAN
Q & A

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Spring boot
Spring bootSpring boot
Spring boot
 
Spring jdbc
Spring jdbcSpring jdbc
Spring jdbc
 
Mock Server Using WireMock
Mock Server Using WireMockMock Server Using WireMock
Mock Server Using WireMock
 
Spring Security
Spring SecuritySpring Security
Spring Security
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
 
Workshop Spring - Session 1 - L'offre Spring et les bases
Workshop Spring  - Session 1 - L'offre Spring et les basesWorkshop Spring  - Session 1 - L'offre Spring et les bases
Workshop Spring - Session 1 - L'offre Spring et les bases
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Model view controller (mvc)
Model view controller (mvc)Model view controller (mvc)
Model view controller (mvc)
 
Expressjs
ExpressjsExpressjs
Expressjs
 
Spring Boot and REST API
Spring Boot and REST APISpring Boot and REST API
Spring Boot and REST API
 
Building a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring BootBuilding a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring Boot
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven Design
 
Whitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applicationsWhitebox testing of Spring Boot applications
Whitebox testing of Spring Boot applications
 
Vue.js
Vue.jsVue.js
Vue.js
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of ControlJava Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
 
Gentle Introduction to Scala
Gentle Introduction to ScalaGentle Introduction to Scala
Gentle Introduction to Scala
 
API Best Practices
API Best PracticesAPI Best Practices
API Best Practices
 
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
 
Automate REST API Testing
Automate REST API TestingAutomate REST API Testing
Automate REST API Testing
 
Spring boot
Spring bootSpring boot
Spring boot
 

Ähnlich wie Take Action with Forge Triggers

Building Progressive Web Apps for Android and iOS
Building Progressive Web Apps for Android and iOSBuilding Progressive Web Apps for Android and iOS
Building Progressive Web Apps for Android and iOS
FITC
 
Iasi CodeCamp 20 april 2013 Florin Cardasim Windows Azure Mobile Services
Iasi CodeCamp 20 april 2013 Florin Cardasim Windows Azure Mobile ServicesIasi CodeCamp 20 april 2013 Florin Cardasim Windows Azure Mobile Services
Iasi CodeCamp 20 april 2013 Florin Cardasim Windows Azure Mobile Services
Codecamp Romania
 
Access policy consolidation for event processing systems
Access policy consolidation for event processing systemsAccess policy consolidation for event processing systems
Access policy consolidation for event processing systems
sumit kumar
 

Ähnlich wie Take Action with Forge Triggers (20)

Full accesspolicyconsolidation for event processing systems
Full accesspolicyconsolidation for event processing systemsFull accesspolicyconsolidation for event processing systems
Full accesspolicyconsolidation for event processing systems
 
[Webinar] Camunda Optimize Release 3.0
[Webinar] Camunda Optimize Release 3.0[Webinar] Camunda Optimize Release 3.0
[Webinar] Camunda Optimize Release 3.0
 
Docker Berlin Meetup June 2015: Docker powering Radical Agility @ Zalando Tech
Docker Berlin Meetup June 2015: Docker powering Radical Agility @ Zalando TechDocker Berlin Meetup June 2015: Docker powering Radical Agility @ Zalando Tech
Docker Berlin Meetup June 2015: Docker powering Radical Agility @ Zalando Tech
 
Building Progressive Web Apps for Android and iOS
Building Progressive Web Apps for Android and iOSBuilding Progressive Web Apps for Android and iOS
Building Progressive Web Apps for Android and iOS
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
F5 Automation and service discovery
F5 Automation and service discoveryF5 Automation and service discovery
F5 Automation and service discovery
 
Iasi CodeCamp 20 april 2013 Florin Cardasim Windows Azure Mobile Services
Iasi CodeCamp 20 april 2013 Florin Cardasim Windows Azure Mobile ServicesIasi CodeCamp 20 april 2013 Florin Cardasim Windows Azure Mobile Services
Iasi CodeCamp 20 april 2013 Florin Cardasim Windows Azure Mobile Services
 
Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28
Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28
Building Advanced Serverless Workflows with AWS Step Functions | AWS Floor28
 
Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...Maxim Salnikov - Service Worker: taking the best from the past experience for...
Maxim Salnikov - Service Worker: taking the best from the past experience for...
 
Brug - Web push notification
Brug  - Web push notificationBrug  - Web push notification
Brug - Web push notification
 
Rits Brown Bag - Salesforce Lightning
Rits Brown Bag - Salesforce LightningRits Brown Bag - Salesforce Lightning
Rits Brown Bag - Salesforce Lightning
 
Bootstrapping an App for Launch
Bootstrapping an App for LaunchBootstrapping an App for Launch
Bootstrapping an App for Launch
 
Access policy consolidation for event processing systems
Access policy consolidation for event processing systemsAccess policy consolidation for event processing systems
Access policy consolidation for event processing systems
 
Blockchin Architecture on Azure-Part-3
Blockchin Architecture on Azure-Part-3Blockchin Architecture on Azure-Part-3
Blockchin Architecture on Azure-Part-3
 
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developeraPetr Dvořák: Mobilní webové služby pohledem iPhone developera
Petr Dvořák: Mobilní webové služby pohledem iPhone developera
 
- Webexpo 2010
- Webexpo 2010- Webexpo 2010
- Webexpo 2010
 
Building Progressive Web Apps for Windows devices
Building Progressive Web Apps for Windows devicesBuilding Progressive Web Apps for Windows devices
Building Progressive Web Apps for Windows devices
 
Alfresco Development Framework Basic
Alfresco Development Framework BasicAlfresco Development Framework Basic
Alfresco Development Framework Basic
 
The Essentials of AWS IoT Device Management (IOT326-R1) - AWS re:Invent 2018
The Essentials of AWS IoT Device Management (IOT326-R1) - AWS re:Invent 2018The Essentials of AWS IoT Device Management (IOT326-R1) - AWS re:Invent 2018
The Essentials of AWS IoT Device Management (IOT326-R1) - AWS re:Invent 2018
 
Structure your Play application with the cake pattern (and test it)
Structure your Play application with the cake pattern (and test it)Structure your Play application with the cake pattern (and test it)
Structure your Play application with the cake pattern (and test it)
 

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
 
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
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
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
 
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
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

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)
 
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
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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...
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
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...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
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
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 

Take Action with Forge Triggers