SlideShare a Scribd company logo
1 of 25
Sync Work Items between
multiple Team Projects:
the good, the bad, the ugly...
Lorenzo Barbieri
@_geniodelmale
lorenzo.barbieri@microsoft.com
#DOH18 2
Organizers & sponsors
GetLatestVersion.it
#DOH18 3
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».
#DOH18 4
Our scenario
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
#DOH18 5
Our scenario
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
PipelinesPAT
Personal Access Token
#DOH18 6
Our scenario
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 CALLPAT
Personal Access Token
Master and Derived Team Projects could be on different Azure DevOps Hosts
#DOH18 7
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.
#DOH18 8
How do we «track» the Original WI?
• We’ve added a custom Tag to the Work Items
• 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
9
DEMO
And beware…
This code is a Proof of Concept…
It’s very far from being perfect!
#DOH18 10
Service Hooks Subscription – Web Hooks
It uses a «standard»
message. My code
doesn’t handle it and
returns a HTTP 500
#DOH18 11
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.
#DOH18 12
Web Hooks – History and «debugging»
#DOH18 13
Test Plans, Suites and Cases (and Test Points)
Derived Team Project
(where test are executed)
Master Team Project
(not updated yet)
#DOH18 14
Invoke Azure Function during a release
• https://docs.
microsoft.com/en-
us/azure/devops/pipelines
/tasks/utility/azure-
function?view=vsts
• If you have a
«normal» HTTP
REST API:
https://docs.microsoft.co
m/en-
us/azure/devops/pipelines
/tasks/utility/http-rest-
api?view=vsts
#DOH18 15
How to monitor function execution
#DOH18 16
Final result
#DOH18 17
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.
#DOH18 18
Realtime Workitem Sync…
It
Could
Work!
#DOH18 19
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!»? 
#DOH18 20
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).
#DOH18 21
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
#DOH18 22
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
23
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...
24
Thank you!!!
Please tweet about the session
#DOH18 @_geniodelmale
Lorenzo Barbieri
lorenzo.barbieri@microsoft.com
#DOH18
THANK YOU!

More Related Content

What's hot

Space Camp June 2022 - API First.pdf
Space Camp June 2022 - API First.pdfSpace Camp June 2022 - API First.pdf
Space Camp June 2022 - API First.pdfPostman
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumSandy Maciel
 
How Small Team Get Ready for SRE (public version)
How Small Team Get Ready for SRE (public version)How Small Team Get Ready for SRE (public version)
How Small Team Get Ready for SRE (public version)Setyo Legowo
 
Métrica da Felicidade
Métrica da FelicidadeMétrica da Felicidade
Métrica da FelicidadeVladson Freire
 
Participação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos ScrumParticipação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos ScrumGustavo Quezada
 
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisMVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisJorge Tressino Rua
 
An Introduction to Unit Testing
An Introduction to Unit TestingAn Introduction to Unit Testing
An Introduction to Unit TestingJoe Tremblay
 
Framework de automação de teste Robotium
Framework de automação de teste RobotiumFramework de automação de teste Robotium
Framework de automação de teste RobotiumBenicio Ávila
 
Metodologia de Desenvolvimento de Softwares
Metodologia de Desenvolvimento de SoftwaresMetodologia de Desenvolvimento de Softwares
Metodologia de Desenvolvimento de SoftwaresAragon Vieira
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAlvaro Viebrantz
 
Spring Cloud Data Flow Overview
Spring Cloud Data Flow OverviewSpring Cloud Data Flow Overview
Spring Cloud Data Flow OverviewVMware Tanzu
 
20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect Update20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect UpdateAmazon Web Services Japan
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessibleVictor Trakhtenberg
 
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbRealizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbMongoDB
 
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策Amazon Web Services Japan
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de softwareYuri Garcia
 

What's hot (20)

Space Camp June 2022 - API First.pdf
Space Camp June 2022 - API First.pdfSpace Camp June 2022 - API First.pdf
Space Camp June 2022 - API First.pdf
 
Introdução a testes de software utilizando selenium
Introdução a testes de software utilizando seleniumIntrodução a testes de software utilizando selenium
Introdução a testes de software utilizando selenium
 
How Small Team Get Ready for SRE (public version)
How Small Team Get Ready for SRE (public version)How Small Team Get Ready for SRE (public version)
How Small Team Get Ready for SRE (public version)
 
Métrica da Felicidade
Métrica da FelicidadeMétrica da Felicidade
Métrica da Felicidade
 
Participação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos ScrumParticipação do Time de Teste em Projetos Scrum
Participação do Time de Teste em Projetos Scrum
 
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões ArquiteturaisMVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
MVC, MVP e MVVM: Uma Comparação de Padrões Arquiteturais
 
An Introduction to Unit Testing
An Introduction to Unit TestingAn Introduction to Unit Testing
An Introduction to Unit Testing
 
Testing microservices with rest assured
Testing microservices with rest assuredTesting microservices with rest assured
Testing microservices with rest assured
 
Framework de automação de teste Robotium
Framework de automação de teste RobotiumFramework de automação de teste Robotium
Framework de automação de teste Robotium
 
Static Code Analysis
Static Code AnalysisStatic Code Analysis
Static Code Analysis
 
Metodologia de Desenvolvimento de Softwares
Metodologia de Desenvolvimento de SoftwaresMetodologia de Desenvolvimento de Softwares
Metodologia de Desenvolvimento de Softwares
 
Ambiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google CloudAmbiente de CI/CD com Google Cloud
Ambiente de CI/CD com Google Cloud
 
API Testing
API TestingAPI Testing
API Testing
 
Spring Cloud Data Flow Overview
Spring Cloud Data Flow OverviewSpring Cloud Data Flow Overview
Spring Cloud Data Flow Overview
 
20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect Update20191217 AWS Black Belt Online Seminar Amazon Connect Update
20191217 AWS Black Belt Online Seminar Amazon Connect Update
 
Swagger - make your API accessible
Swagger - make your API accessibleSwagger - make your API accessible
Swagger - make your API accessible
 
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e MongodbRealizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
Realizzazione di Microservizi con Docker, Kubernetes, Kafka e Mongodb
 
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
[AWS初心者向けWebinar] 利用者が実施するAWS上でのセキュリティ対策
 
Modelos de ciclo de vida de software
Modelos de ciclo de vida de softwareModelos de ciclo de vida de software
Modelos de ciclo de vida de software
 
Modelos de processos de software
Modelos de processos de softwareModelos de processos de software
Modelos de processos de software
 

Similar to Sync Work Items between Teams

Sync Workitems between multiple Team Projects #vssatpn
Sync Workitems between multiple Team Projects #vssatpnSync Workitems between multiple Team Projects #vssatpn
Sync Workitems between multiple Team Projects #vssatpnLorenzo Barbieri
 
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
 
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
 
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
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & Youjskulski
 
A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5SSW
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara AnjargolianHakka Labs
 
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...AOE
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesFab L
 
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
 
Github for Serious Business Professional
Github for Serious Business ProfessionalGithub for Serious Business Professional
Github for Serious Business Professionalzwheller
 
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
 
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
 
Choosing Automation for DevOps & Continuous Delivery in the Enterprise
Choosing Automation for DevOps & Continuous Delivery in the EnterpriseChoosing Automation for DevOps & Continuous Delivery in the Enterprise
Choosing Automation for DevOps & Continuous Delivery in the EnterpriseXebiaLabs
 

Similar to Sync Work Items between Teams (20)

Sync Workitems between multiple Team Projects #vssatpn
Sync Workitems between multiple Team Projects #vssatpnSync Workitems between multiple Team Projects #vssatpn
Sync Workitems between multiple Team Projects #vssatpn
 
Git Makes Me Angry Inside
Git Makes Me Angry InsideGit Makes Me Angry Inside
Git Makes Me Angry Inside
 
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
 
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
 
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)
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & You
 
Usable Software Design
Usable Software DesignUsable Software Design
Usable Software Design
 
A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5A modern architecturereview–usingcodereviewtools-ver-3.5
A modern architecturereview–usingcodereviewtools-ver-3.5
 
DDD with Behat
DDD with BehatDDD with Behat
DDD with Behat
 
Performant Django - Ara Anjargolian
Performant Django - Ara AnjargolianPerformant Django - Ara Anjargolian
Performant Django - Ara Anjargolian
 
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
Magento 2 Best Practice Workfow // David Lambauer // Meet Magento 2017 // Lei...
 
DevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation SlidesDevSecCon SG 2018 Fabian Presentation Slides
DevSecCon SG 2018 Fabian Presentation Slides
 
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
 
Github for Serious Business Professional
Github for Serious Business ProfessionalGithub for Serious Business Professional
Github for Serious Business Professional
 
DevOps Workshop Part 1
DevOps Workshop Part 1DevOps Workshop Part 1
DevOps Workshop Part 1
 
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
 
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
 
Choosing Automation for DevOps & Continuous Delivery in the Enterprise
Choosing Automation for DevOps & Continuous Delivery in the EnterpriseChoosing Automation for DevOps & Continuous Delivery in the Enterprise
Choosing Automation for DevOps & Continuous Delivery in the Enterprise
 

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

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 

Sync Work Items between Teams

  • 1. Sync Work Items between multiple Team Projects: the good, the bad, the ugly... Lorenzo Barbieri @_geniodelmale lorenzo.barbieri@microsoft.com
  • 2. #DOH18 2 Organizers & sponsors GetLatestVersion.it
  • 3. #DOH18 3 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».
  • 4. #DOH18 4 Our scenario 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
  • 5. #DOH18 5 Our scenario 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 PipelinesPAT Personal Access Token
  • 6. #DOH18 6 Our scenario 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 CALLPAT Personal Access Token Master and Derived Team Projects could be on different Azure DevOps Hosts
  • 7. #DOH18 7 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.
  • 8. #DOH18 8 How do we «track» the Original WI? • We’ve added a custom Tag to the Work Items • 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
  • 9. 9 DEMO And beware… This code is a Proof of Concept… It’s very far from being perfect!
  • 10. #DOH18 10 Service Hooks Subscription – Web Hooks It uses a «standard» message. My code doesn’t handle it and returns a HTTP 500
  • 11. #DOH18 11 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.
  • 12. #DOH18 12 Web Hooks – History and «debugging»
  • 13. #DOH18 13 Test Plans, Suites and Cases (and Test Points) Derived Team Project (where test are executed) Master Team Project (not updated yet)
  • 14. #DOH18 14 Invoke Azure Function during a release • https://docs. microsoft.com/en- us/azure/devops/pipelines /tasks/utility/azure- function?view=vsts • If you have a «normal» HTTP REST API: https://docs.microsoft.co m/en- us/azure/devops/pipelines /tasks/utility/http-rest- api?view=vsts
  • 15. #DOH18 15 How to monitor function execution
  • 17. #DOH18 17 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.
  • 18. #DOH18 18 Realtime Workitem Sync… It Could Work!
  • 19. #DOH18 19 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!»? 
  • 20. #DOH18 20 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).
  • 21. #DOH18 21 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
  • 22. #DOH18 22 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
  • 23. 23 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...
  • 24. 24 Thank you!!! Please tweet about the session #DOH18 @_geniodelmale Lorenzo Barbieri lorenzo.barbieri@microsoft.com