SlideShare a Scribd company logo
1 of 23
saturday 2018
SYNC WORK ITEMS BETWEEN
MULTIPLE TEAM PROJECTS:
THE GOOD, THE BAD, THE UGLY...
Lorenzo Barbieri
@_geniodelmale
lorenzo.barbieri@microsoft.com
#vssatpn
WORK ITEMS SYNC
It’s not in the product…
• Too many edge cases, but you’ve «most of» the building blocks.
There are different kind of Work Items…
• Test related ones are «strange beasts».
• You can use them as «Work Items» but to work with Test items you need VS
Enterprise or Test Management license.
Sometimes we need to make assumptions…
• APIs are not «well documented».
2
OUR SCENARIO
3
Master
Team
Project
Source of Work
Items
Receives Test Runs
and Test Results
Derived
Team
Project
Receives Work
Items (filtered?)
Executes Test Runs
that are exported
(with Test Results)
One-way Workitem Sync (mostly test related)
Azure
Pipelines
OUR SCENARIO
4
Master
Team
Project
Source of Work
Items
Receives Test Runs
and Test Results
Derived
Team
Project
Receives Work
Items (filtered?)
Executes Test Runs
that are exported
(with Test Results)
Web Hooks:
- CreateWI
- UpdateWI
- DeleteWI
REST APIWeb Hooks JSON
REST API
Azure
Pipelines
PAT
Personal Access Token
OUR SCENARIO
5
Master
Team
Project
Source of Work
Items
Receives Test Runs
and Test Results
Derived
Team
Project
Receives Work
Items (filtered?)
Executes Test Runs
that are exported
(with Test Results)
Web Hooks:
- CreateWI
- UpdateWI
- DeleteWI
Http API:
- MigrateTestRun
REST APIWeb Hooks JSON
REST API
Azure
PipelinesHTTP CALL
PAT
Personal Access Token
Master and Derived Team Projects could be on different Azure DevOps Hosts
WHAT IS NOT PART OF THIS
SOLUTION
Code sync
• Could be «easily» done with GIT, could be harder with TFVC
Users, groups, iterations, areas, boards, artifacts, etc…
• This solution «works» but everything else should be set-up manually
• Links to code, wiki, etc… are not handled, they can work on the same host, on
multiple hosts some work is required.
Process templates MUST be equal.
• No on-the-fly transformation of different templates.
6
WE USE A CUSTOM TAG TO TRACK
THE ORIGINAL WORK ITEM ID
PRO:
 No need to create a custom process
CON:
 Could be «modified» by the users if not blocked
in some ways
 Difficult to read in the Work Items list
7
DEMO
AND BEWARE…
THIS CODE IS A PROOF OF
CONCEPT…
IT’S VERY FAR FROM BEING
PERFECT!
8
SERVICE HOOKS SUBSCRIPTION –
WEB HOOKS
9
It uses a «standard»
message. My code
doesn’t handle it and
returns a HTTP 500
SERVICE HOOKS
You’ve to «monitor» this tab. If the functions fail for too many calls the corresponding Service
Hook will be suspended, and should be enabled again manually.
10
WEB HOOKS – HISTORY AND
«DEBUGGING»
11
TEST PLANS, SUITES AND CASES
(AND TEST POINTS)
Derived Team Project
(where test are executed)
Master Team Project
(not updated yet)
12
INVOKE AZURE FUNCTION DURING
A RELEASE
https://docs. microsoft.com/en-
us/azure/devops/pipelines/tasks/uti
lity/azure-function?view=vsts
If you have a «normal»
HTTP REST API:
https://docs.microsoft.com/en-
us/azure/devops/pipelines/tasks/uti
lity/http-rest-api?view=vsts
13
HOW TO MONITOR FUNCTION
EXECUTION
14
FINAL RESULT
15
SOME NOTES REGARDING TEST
RUN MIGRATIONS
To update the corresponding Test Case, a Test Point should be
associated to the destination Test Run and Test Case.
• When creating the Test Point, a Test Result is automatically created for us, so we don’t
need to create a new one but update the existing one.
Automatic Tests need a Build also on the «source» Team Project.
• At the moment we’re changing it to a Manual Test.
• The evolution could be having a «fake» Build inside the Master Team Project and pass
the Build Definition ID to the Azure Function that could queue the «empty» build, wait
for it and associate the Test Run/Results to it.
16
REALTIME WORKITEM SYNC…
17
It
Could
Work!
THE GOOD
It works
It solved partner and customer problem
We discovered a lot of things, and learned a lot of the «internals» of Work Items and
especially Test items and APIs
Azure Functions offer 1M free executions per month, with 400.000Gb*s total memory
usage… well enough also for «crowded» Team Projects…
Did I already say that «It works!»? 
18
THE BAD
APIs are not «wery vell» documented. Perhaps we should step in and propose PRs for
docs.microsoft.com… (if we could find 48hrs days ).
Most of the time we made some trade-offs to simplify the code, especially in the Test sync
code.
• It worked on our scenarios,a full-fledged solution could be much more complex.
• Some cases (i.e., Work Item Restore, Work Item Delete from Recycle Bin) were ignored.
• Certain things are not, yet, aligned: i.e., Test Plans are visible as Work Items in the Derived TP
We’re still on Azure Functions v1, with manual HTTP calls because of issues with Azure
DevOps SDK on Functions (at least when we started the project).
Areas and Iterations should be updated manually, there aren’t Service Hooks on those ones
(we have thought about some workarounds but didn’t implement any).
19
THE UGLY
My code! 
Error handling, monitoring, etc… is very basic and very limited.
We need to figure out how to «restart» a working environment after a failure. Now it’s a
manual process.
• It’s not a big problem for this project, considering the low volume of new/updated Work Items.
PAT should be updated manually… every year or so.
• A «service account» user should be used, not an actual user like in this demo.
• We’re using a single PAT for both Team Projects, also if they’re on different hosts.
TestMethod association to Test Case is available only from Visual Studio 2017 15.9 Preview
2 or later:
• https://docs.microsoft.com/en-us/azure/devops/pipelines/test/reference-qa?view=vsts#test-types
20
WHAT ABOUT A «FULL» TWO WAY
SYNC
One could
extend this
approach for a
«full» two way
sync
- You need to remove «fixed»
paths inside the code
- Workitem IDs should be
tracked on both sides
•- Beware of «circular loops»
Realtime
Sync
An easier option
could be using a
«traditional
sync» and
scheduling it
- You should handle the
scheduler, on-premise or in
the cloud (timed functions?)
- External tool could be
difficult to set-up
Scheduled
Sync
21
CAN I HAVE THE CODE?
IT DEPENDS…
IT’S NOT ON GITHUB, YET…
BUT I’M NOT SURE IF AND
WHEN IT COULD BE READY
FOR PUBLICATION...
22
saturday 2018
THANKS!!! Lorenzo Barbieri
@_geniodelmale
lorenzo.barbieri@microsoft.com
#vssatpn

More Related Content

What's hot

Behat bdd training (php) course slides pdf
Behat bdd training (php) course slides pdfBehat bdd training (php) course slides pdf
Behat bdd training (php) course slides pdfseleniumbootcamp
 
2014 Joker - Integration Testing from the Trenches
2014 Joker - Integration Testing from the Trenches2014 Joker - Integration Testing from the Trenches
2014 Joker - Integration Testing from the TrenchesNicolas Fränkel
 
Using Selenium to Improve a Teams Development Cycle
Using Selenium to Improve a Teams Development CycleUsing Selenium to Improve a Teams Development Cycle
Using Selenium to Improve a Teams Development Cycleseleniumconf
 
Using The Page Object Pattern
Using The Page Object PatternUsing The Page Object Pattern
Using The Page Object PatternDante Briones
 
JavaScript Metaprogramming with ES 2015 Proxy
JavaScript Metaprogramming with ES 2015 ProxyJavaScript Metaprogramming with ES 2015 Proxy
JavaScript Metaprogramming with ES 2015 ProxyAlexandr Skachkov
 
Visual Automation Framework via Screenshot Comparison
Visual Automation Framework via Screenshot ComparisonVisual Automation Framework via Screenshot Comparison
Visual Automation Framework via Screenshot ComparisonMek Srunyu Stittri
 
Progressive Enhancement using WSGI
Progressive Enhancement using WSGIProgressive Enhancement using WSGI
Progressive Enhancement using WSGIMatthew Wilkes
 
Testing nightwatch, by David Torroija
Testing nightwatch, by David TorroijaTesting nightwatch, by David Torroija
Testing nightwatch, by David TorroijaDavid Torroija
 
JavaScript Unit Testing
JavaScript Unit TestingJavaScript Unit Testing
JavaScript Unit TestingKeir Bowden
 
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 -  Fullstack end-to-end Test Automation with node.jsForwardJS 2017 -  Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.jsMek Srunyu Stittri
 
Bdd with Cucumber and Mocha
Bdd with Cucumber and MochaBdd with Cucumber and Mocha
Bdd with Cucumber and MochaAtish Narlawar
 
Java script unit testing
Java script unit testingJava script unit testing
Java script unit testingMats Bryntse
 
Automated Acceptance Tests in .NET
Automated Acceptance Tests in .NETAutomated Acceptance Tests in .NET
Automated Acceptance Tests in .NETWyn B. Van Devanter
 
Load Testing using Continuous Integration tools
Load Testing using Continuous Integration toolsLoad Testing using Continuous Integration tools
Load Testing using Continuous Integration toolsRick Pitts
 
Angular js automation using protractor
Angular js automation using protractorAngular js automation using protractor
Angular js automation using protractorRavi Gupta
 
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Fwdays
 
Testing Big in JavaScript
Testing Big in JavaScriptTesting Big in JavaScript
Testing Big in JavaScriptRobert DeLuca
 
Better Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternBetter Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternSargis Sargsyan
 
Node.js exception handling
Node.js exception handlingNode.js exception handling
Node.js exception handlingMinh Hoang
 

What's hot (20)

Behat bdd training (php) course slides pdf
Behat bdd training (php) course slides pdfBehat bdd training (php) course slides pdf
Behat bdd training (php) course slides pdf
 
2014 Joker - Integration Testing from the Trenches
2014 Joker - Integration Testing from the Trenches2014 Joker - Integration Testing from the Trenches
2014 Joker - Integration Testing from the Trenches
 
Using Selenium to Improve a Teams Development Cycle
Using Selenium to Improve a Teams Development CycleUsing Selenium to Improve a Teams Development Cycle
Using Selenium to Improve a Teams Development Cycle
 
Using The Page Object Pattern
Using The Page Object PatternUsing The Page Object Pattern
Using The Page Object Pattern
 
JavaScript Metaprogramming with ES 2015 Proxy
JavaScript Metaprogramming with ES 2015 ProxyJavaScript Metaprogramming with ES 2015 Proxy
JavaScript Metaprogramming with ES 2015 Proxy
 
Visual Automation Framework via Screenshot Comparison
Visual Automation Framework via Screenshot ComparisonVisual Automation Framework via Screenshot Comparison
Visual Automation Framework via Screenshot Comparison
 
Progressive Enhancement using WSGI
Progressive Enhancement using WSGIProgressive Enhancement using WSGI
Progressive Enhancement using WSGI
 
Testing nightwatch, by David Torroija
Testing nightwatch, by David TorroijaTesting nightwatch, by David Torroija
Testing nightwatch, by David Torroija
 
JavaScript Unit Testing
JavaScript Unit TestingJavaScript Unit Testing
JavaScript Unit Testing
 
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 -  Fullstack end-to-end Test Automation with node.jsForwardJS 2017 -  Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.js
 
Bdd with Cucumber and Mocha
Bdd with Cucumber and MochaBdd with Cucumber and Mocha
Bdd with Cucumber and Mocha
 
Java script unit testing
Java script unit testingJava script unit testing
Java script unit testing
 
Protractor: Tips & Tricks
Protractor: Tips & TricksProtractor: Tips & Tricks
Protractor: Tips & Tricks
 
Automated Acceptance Tests in .NET
Automated Acceptance Tests in .NETAutomated Acceptance Tests in .NET
Automated Acceptance Tests in .NET
 
Load Testing using Continuous Integration tools
Load Testing using Continuous Integration toolsLoad Testing using Continuous Integration tools
Load Testing using Continuous Integration tools
 
Angular js automation using protractor
Angular js automation using protractorAngular js automation using protractor
Angular js automation using protractor
 
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
Алексей Ященко и Ярослав Волощук "False simplicity of front-end applications"
 
Testing Big in JavaScript
Testing Big in JavaScriptTesting Big in JavaScript
Testing Big in JavaScript
 
Better Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component PatternBetter Page Object Handling with Loadable Component Pattern
Better Page Object Handling with Loadable Component Pattern
 
Node.js exception handling
Node.js exception handlingNode.js exception handling
Node.js exception handling
 

Similar to Work Items Sync Between Multiple Team Projects

Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Dinis Cruz
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara AnjargolianHakka Labs
 
InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)Mark Voelker
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfTobiasGoeschel
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayBizTalk360
 
SOA Knowledge Kit, Developer Productivity and Performance Comparison Analysis
SOA Knowledge Kit, Developer Productivity  and Performance Comparison AnalysisSOA Knowledge Kit, Developer Productivity  and Performance Comparison Analysis
SOA Knowledge Kit, Developer Productivity and Performance Comparison AnalysisClever Moe
 
Gradle - From minutes to seconds: minimizing build times
Gradle - From minutes to seconds: minimizing build timesGradle - From minutes to seconds: minimizing build times
Gradle - From minutes to seconds: minimizing build timesRene Gröschke
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular applicationSuresh Patidar
 
Tips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsTips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsStrongback Consulting
 
Integrating ONE Automation with Business Systems with the API
Integrating ONE Automation with Business Systems with the APIIntegrating ONE Automation with Business Systems with the API
Integrating ONE Automation with Business Systems with the APICA | Automic Software
 
Making operations visible - Nick Gallbreath
Making operations visible - Nick GallbreathMaking operations visible - Nick Gallbreath
Making operations visible - Nick GallbreathDevopsdays
 
Making operations visible - devopsdays tokyo 2013
Making operations visible  - devopsdays tokyo 2013Making operations visible  - devopsdays tokyo 2013
Making operations visible - devopsdays tokyo 2013Nick Galbreath
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013David Funaro
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & Youjskulski
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development WorkflowVũ Nguyễn
 
High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014Oliver N
 
Chris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing workChris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing workChris O'Brien
 
Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Yan Cui
 
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...Vadym Kazulkin
 

Similar to Work Items Sync Between Multiple Team Projects (20)

Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
Start with passing tests (tdd for bugs) v0.5 (22 sep 2016)
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara Anjargolian
 
InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)InteropWG Intro & Vertical Programs (May. 2017)
InteropWG Intro & Vertical Programs (May. 2017)
 
Workshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdfWorkshop - The Little Pattern That Could.pdf
Workshop - The Little Pattern That Could.pdf
 
Testing for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration MondayTesting for Logic App Solutions | Integration Monday
Testing for Logic App Solutions | Integration Monday
 
SOA Knowledge Kit, Developer Productivity and Performance Comparison Analysis
SOA Knowledge Kit, Developer Productivity  and Performance Comparison AnalysisSOA Knowledge Kit, Developer Productivity  and Performance Comparison Analysis
SOA Knowledge Kit, Developer Productivity and Performance Comparison Analysis
 
Gradle - From minutes to seconds: minimizing build times
Gradle - From minutes to seconds: minimizing build timesGradle - From minutes to seconds: minimizing build times
Gradle - From minutes to seconds: minimizing build times
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
Web worker in your angular application
Web worker in your angular applicationWeb worker in your angular application
Web worker in your angular application
 
Tips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS ApplicationsTips for Developing and Testing IBM HATS Applications
Tips for Developing and Testing IBM HATS Applications
 
Integrating ONE Automation with Business Systems with the API
Integrating ONE Automation with Business Systems with the APIIntegrating ONE Automation with Business Systems with the API
Integrating ONE Automation with Business Systems with the API
 
Making operations visible - Nick Gallbreath
Making operations visible - Nick GallbreathMaking operations visible - Nick Gallbreath
Making operations visible - Nick Gallbreath
 
Making operations visible - devopsdays tokyo 2013
Making operations visible  - devopsdays tokyo 2013Making operations visible  - devopsdays tokyo 2013
Making operations visible - devopsdays tokyo 2013
 
Continuous delivery @wcap 5-09-2013
Continuous delivery   @wcap 5-09-2013Continuous delivery   @wcap 5-09-2013
Continuous delivery @wcap 5-09-2013
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & You
 
High Productivity Web Development Workflow
High Productivity Web Development WorkflowHigh Productivity Web Development Workflow
High Productivity Web Development Workflow
 
High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014High productivity web development workflow - JavaScript Meetup Saigon 2014
High productivity web development workflow - JavaScript Meetup Saigon 2014
 
Chris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing workChris OBrien - Azure DevOps for managing work
Chris OBrien - Azure DevOps for managing work
 
Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)Serverless in production (O'Reilly Software Architecture)
Serverless in production (O'Reilly Software Architecture)
 
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
Convince your boss to go Serverless at AWS User Group Tirupathi and Serverles...
 

More from Lorenzo Barbieri

Microsoft Ignite Milan: Copilot Adoption In Italy
Microsoft Ignite Milan: Copilot Adoption In ItalyMicrosoft Ignite Milan: Copilot Adoption In Italy
Microsoft Ignite Milan: Copilot Adoption In ItalyLorenzo Barbieri
 
Can Santa Cloud survive the Generative AI revolution?
Can Santa Cloud survive the Generative AI revolution?Can Santa Cloud survive the Generative AI revolution?
Can Santa Cloud survive the Generative AI revolution?Lorenzo Barbieri
 
Build and Modernize Intelligent Apps​
Build and Modernize Intelligent Apps​Build and Modernize Intelligent Apps​
Build and Modernize Intelligent Apps​Lorenzo Barbieri
 
Develop any software from anywhere!
Develop any software from anywhere!Develop any software from anywhere!
Develop any software from anywhere!Lorenzo Barbieri
 
Personal Branding for Developers @ PyCon Italy 2023
Personal Branding for Developers @ PyCon Italy 2023Personal Branding for Developers @ PyCon Italy 2023
Personal Branding for Developers @ PyCon Italy 2023Lorenzo Barbieri
 
Codemotion DevCast: App Modernization in the Cloud
Codemotion DevCast: App Modernization in the CloudCodemotion DevCast: App Modernization in the Cloud
Codemotion DevCast: App Modernization in the CloudLorenzo Barbieri
 
How do you protect a hybrid PaaS-IaaS solution, built entirely in the cloud
How do you protect a hybrid PaaS-IaaS solution, built entirely in the cloudHow do you protect a hybrid PaaS-IaaS solution, built entirely in the cloud
How do you protect a hybrid PaaS-IaaS solution, built entirely in the cloudLorenzo Barbieri
 
Azure DevOps & GitHub... Better Together!
Azure DevOps & GitHub... Better Together!Azure DevOps & GitHub... Better Together!
Azure DevOps & GitHub... Better Together!Lorenzo Barbieri
 
Azure Academyadi: Introduction to GitHub and AzureDevOps
Azure Academyadi: Introduction to GitHub and AzureDevOpsAzure Academyadi: Introduction to GitHub and AzureDevOps
Azure Academyadi: Introduction to GitHub and AzureDevOpsLorenzo Barbieri
 
Practical Personal Branding for Developers
Practical Personal Branding for DevelopersPractical Personal Branding for Developers
Practical Personal Branding for DevelopersLorenzo Barbieri
 
Kubernetes for .NET Developers
Kubernetes for .NET DevelopersKubernetes for .NET Developers
Kubernetes for .NET DevelopersLorenzo Barbieri
 
Accessible Public Speaking
Accessible Public SpeakingAccessible Public Speaking
Accessible Public SpeakingLorenzo Barbieri
 
Kubernetes VS. App Service: When the orchestrator challenges the platform
Kubernetes VS. App Service: When the orchestrator challenges the platformKubernetes VS. App Service: When the orchestrator challenges the platform
Kubernetes VS. App Service: When the orchestrator challenges the platformLorenzo Barbieri
 
Public Speaking For Geeks: Work from Home Edition!
Public Speaking For Geeks: Work from Home Edition!Public Speaking For Geeks: Work from Home Edition!
Public Speaking For Geeks: Work from Home Edition!Lorenzo Barbieri
 
Public Speaking for Geeks @ MS Ignite The Tour Milan
Public Speaking for Geeks @ MS Ignite The Tour MilanPublic Speaking for Geeks @ MS Ignite The Tour Milan
Public Speaking for Geeks @ MS Ignite The Tour MilanLorenzo Barbieri
 

More from Lorenzo Barbieri (20)

Microsoft Ignite Milan: Copilot Adoption In Italy
Microsoft Ignite Milan: Copilot Adoption In ItalyMicrosoft Ignite Milan: Copilot Adoption In Italy
Microsoft Ignite Milan: Copilot Adoption In Italy
 
Can Santa Cloud survive the Generative AI revolution?
Can Santa Cloud survive the Generative AI revolution?Can Santa Cloud survive the Generative AI revolution?
Can Santa Cloud survive the Generative AI revolution?
 
Build and Modernize Intelligent Apps​
Build and Modernize Intelligent Apps​Build and Modernize Intelligent Apps​
Build and Modernize Intelligent Apps​
 
Develop any software from anywhere!
Develop any software from anywhere!Develop any software from anywhere!
Develop any software from anywhere!
 
Personal Branding for Developers @ PyCon Italy 2023
Personal Branding for Developers @ PyCon Italy 2023Personal Branding for Developers @ PyCon Italy 2023
Personal Branding for Developers @ PyCon Italy 2023
 
Storytelling inclusivo
Storytelling inclusivoStorytelling inclusivo
Storytelling inclusivo
 
Effective Public Speaking
Effective Public SpeakingEffective Public Speaking
Effective Public Speaking
 
GitHub for partners
GitHub for partnersGitHub for partners
GitHub for partners
 
Codemotion DevCast: App Modernization in the Cloud
Codemotion DevCast: App Modernization in the CloudCodemotion DevCast: App Modernization in the Cloud
Codemotion DevCast: App Modernization in the Cloud
 
How do you protect a hybrid PaaS-IaaS solution, built entirely in the cloud
How do you protect a hybrid PaaS-IaaS solution, built entirely in the cloudHow do you protect a hybrid PaaS-IaaS solution, built entirely in the cloud
How do you protect a hybrid PaaS-IaaS solution, built entirely in the cloud
 
Azure DevOps & GitHub... Better Together!
Azure DevOps & GitHub... Better Together!Azure DevOps & GitHub... Better Together!
Azure DevOps & GitHub... Better Together!
 
Azure Academyadi: Introduction to GitHub and AzureDevOps
Azure Academyadi: Introduction to GitHub and AzureDevOpsAzure Academyadi: Introduction to GitHub and AzureDevOps
Azure Academyadi: Introduction to GitHub and AzureDevOps
 
Kubernetes vs App Service
Kubernetes vs App ServiceKubernetes vs App Service
Kubernetes vs App Service
 
Practical Personal Branding for Developers
Practical Personal Branding for DevelopersPractical Personal Branding for Developers
Practical Personal Branding for Developers
 
Prepare a Short Pitch
Prepare a Short PitchPrepare a Short Pitch
Prepare a Short Pitch
 
Kubernetes for .NET Developers
Kubernetes for .NET DevelopersKubernetes for .NET Developers
Kubernetes for .NET Developers
 
Accessible Public Speaking
Accessible Public SpeakingAccessible Public Speaking
Accessible Public Speaking
 
Kubernetes VS. App Service: When the orchestrator challenges the platform
Kubernetes VS. App Service: When the orchestrator challenges the platformKubernetes VS. App Service: When the orchestrator challenges the platform
Kubernetes VS. App Service: When the orchestrator challenges the platform
 
Public Speaking For Geeks: Work from Home Edition!
Public Speaking For Geeks: Work from Home Edition!Public Speaking For Geeks: Work from Home Edition!
Public Speaking For Geeks: Work from Home Edition!
 
Public Speaking for Geeks @ MS Ignite The Tour Milan
Public Speaking for Geeks @ MS Ignite The Tour MilanPublic Speaking for Geeks @ MS Ignite The Tour Milan
Public Speaking for Geeks @ MS Ignite The Tour Milan
 

Recently uploaded

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作qr0udbr0
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 

Recently uploaded (20)

办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作英国UN学位证,北安普顿大学毕业证书1:1制作
英国UN学位证,北安普顿大学毕业证书1:1制作
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 

Work Items Sync Between Multiple Team Projects

  • 1. saturday 2018 SYNC WORK ITEMS BETWEEN MULTIPLE TEAM PROJECTS: THE GOOD, THE BAD, THE UGLY... Lorenzo Barbieri @_geniodelmale lorenzo.barbieri@microsoft.com #vssatpn
  • 2. WORK ITEMS SYNC It’s not in the product… • Too many edge cases, but you’ve «most of» the building blocks. There are different kind of Work Items… • Test related ones are «strange beasts». • You can use them as «Work Items» but to work with Test items you need VS Enterprise or Test Management license. Sometimes we need to make assumptions… • APIs are not «well documented». 2
  • 3. OUR SCENARIO 3 Master Team Project Source of Work Items Receives Test Runs and Test Results Derived Team Project Receives Work Items (filtered?) Executes Test Runs that are exported (with Test Results) One-way Workitem Sync (mostly test related) Azure Pipelines
  • 4. OUR SCENARIO 4 Master Team Project Source of Work Items Receives Test Runs and Test Results Derived Team Project Receives Work Items (filtered?) Executes Test Runs that are exported (with Test Results) Web Hooks: - CreateWI - UpdateWI - DeleteWI REST APIWeb Hooks JSON REST API Azure Pipelines PAT Personal Access Token
  • 5. OUR SCENARIO 5 Master Team Project Source of Work Items Receives Test Runs and Test Results Derived Team Project Receives Work Items (filtered?) Executes Test Runs that are exported (with Test Results) Web Hooks: - CreateWI - UpdateWI - DeleteWI Http API: - MigrateTestRun REST APIWeb Hooks JSON REST API Azure PipelinesHTTP CALL PAT Personal Access Token Master and Derived Team Projects could be on different Azure DevOps Hosts
  • 6. WHAT IS NOT PART OF THIS SOLUTION Code sync • Could be «easily» done with GIT, could be harder with TFVC Users, groups, iterations, areas, boards, artifacts, etc… • This solution «works» but everything else should be set-up manually • Links to code, wiki, etc… are not handled, they can work on the same host, on multiple hosts some work is required. Process templates MUST be equal. • No on-the-fly transformation of different templates. 6
  • 7. WE USE A CUSTOM TAG TO TRACK THE ORIGINAL WORK ITEM ID PRO:  No need to create a custom process CON:  Could be «modified» by the users if not blocked in some ways  Difficult to read in the Work Items list 7
  • 8. DEMO AND BEWARE… THIS CODE IS A PROOF OF CONCEPT… IT’S VERY FAR FROM BEING PERFECT! 8
  • 9. SERVICE HOOKS SUBSCRIPTION – WEB HOOKS 9 It uses a «standard» message. My code doesn’t handle it and returns a HTTP 500
  • 10. SERVICE HOOKS You’ve to «monitor» this tab. If the functions fail for too many calls the corresponding Service Hook will be suspended, and should be enabled again manually. 10
  • 11. WEB HOOKS – HISTORY AND «DEBUGGING» 11
  • 12. TEST PLANS, SUITES AND CASES (AND TEST POINTS) Derived Team Project (where test are executed) Master Team Project (not updated yet) 12
  • 13. INVOKE AZURE FUNCTION DURING A RELEASE https://docs. microsoft.com/en- us/azure/devops/pipelines/tasks/uti lity/azure-function?view=vsts If you have a «normal» HTTP REST API: https://docs.microsoft.com/en- us/azure/devops/pipelines/tasks/uti lity/http-rest-api?view=vsts 13
  • 14. HOW TO MONITOR FUNCTION EXECUTION 14
  • 16. SOME NOTES REGARDING TEST RUN MIGRATIONS To update the corresponding Test Case, a Test Point should be associated to the destination Test Run and Test Case. • When creating the Test Point, a Test Result is automatically created for us, so we don’t need to create a new one but update the existing one. Automatic Tests need a Build also on the «source» Team Project. • At the moment we’re changing it to a Manual Test. • The evolution could be having a «fake» Build inside the Master Team Project and pass the Build Definition ID to the Azure Function that could queue the «empty» build, wait for it and associate the Test Run/Results to it. 16
  • 18. THE GOOD It works It solved partner and customer problem We discovered a lot of things, and learned a lot of the «internals» of Work Items and especially Test items and APIs Azure Functions offer 1M free executions per month, with 400.000Gb*s total memory usage… well enough also for «crowded» Team Projects… Did I already say that «It works!»?  18
  • 19. THE BAD APIs are not «wery vell» documented. Perhaps we should step in and propose PRs for docs.microsoft.com… (if we could find 48hrs days ). Most of the time we made some trade-offs to simplify the code, especially in the Test sync code. • It worked on our scenarios,a full-fledged solution could be much more complex. • Some cases (i.e., Work Item Restore, Work Item Delete from Recycle Bin) were ignored. • Certain things are not, yet, aligned: i.e., Test Plans are visible as Work Items in the Derived TP We’re still on Azure Functions v1, with manual HTTP calls because of issues with Azure DevOps SDK on Functions (at least when we started the project). Areas and Iterations should be updated manually, there aren’t Service Hooks on those ones (we have thought about some workarounds but didn’t implement any). 19
  • 20. THE UGLY My code!  Error handling, monitoring, etc… is very basic and very limited. We need to figure out how to «restart» a working environment after a failure. Now it’s a manual process. • It’s not a big problem for this project, considering the low volume of new/updated Work Items. PAT should be updated manually… every year or so. • A «service account» user should be used, not an actual user like in this demo. • We’re using a single PAT for both Team Projects, also if they’re on different hosts. TestMethod association to Test Case is available only from Visual Studio 2017 15.9 Preview 2 or later: • https://docs.microsoft.com/en-us/azure/devops/pipelines/test/reference-qa?view=vsts#test-types 20
  • 21. WHAT ABOUT A «FULL» TWO WAY SYNC One could extend this approach for a «full» two way sync - You need to remove «fixed» paths inside the code - Workitem IDs should be tracked on both sides •- Beware of «circular loops» Realtime Sync An easier option could be using a «traditional sync» and scheduling it - You should handle the scheduler, on-premise or in the cloud (timed functions?) - External tool could be difficult to set-up Scheduled Sync 21
  • 22. CAN I HAVE THE CODE? IT DEPENDS… IT’S NOT ON GITHUB, YET… BUT I’M NOT SURE IF AND WHEN IT COULD BE READY FOR PUBLICATION... 22
  • 23. saturday 2018 THANKS!!! Lorenzo Barbieri @_geniodelmale lorenzo.barbieri@microsoft.com #vssatpn