Version 1.1 of AzDoAPITools is live!

In my previous post I did a comparisson between AzDoAPITools and the Microsoft “Export to YAML” functionality.

The results were self-reflecting and showed some urgent ToDo’s on my side which were either already there or which went unnoticed and showed up when I compared both tools.

This blog is going to be short because people will need to enjoy their holidays. the new version can be found on PSGallery and GitHub.

Overview of changes

  • Added Pipeline / Job demands
  • Added pipeline timeouts to every job
  • Added Step Properties
  • Added Agentless pools

  • Changed Job id / displayName notation
  • Changed order of triggers
  • Changed order of job properties
  • Fixed syntax for included / excluded paths and branches notation
  • Fixed DST bug
  • Fixed empty jobs syntax
  • Fixed notation for job properties for timeout and canceltimeout

In depth changes

Additional functionality

Added Pipeline / Job demands

Demands which are stated inside each job and those specified at pipeline level will now show in the job clause like so

These will be included for both Microsoft hosted agents and self-hosted agents. Serverless agents will not have demands even though they are stated.

Added pipeline timeouts to every job

If a pipeline timeout is being declared in the options tab which differs from the defaults they will be included in each job which occurs in the pipeline.

if a non-default time-out has been declared on that specific job it will take precedence over the pipeline declared timeout.

Added Step Properties

if a job has properties which are related to checking out the underlying repository they will now be included.

The resulting YAML snippet will show this:

Added Agentless pools

Agentless jobs aka serverless jobs are now supported. Previously these would be ignored or included with a wrong syntax because I never found myself using them. For the people who do they are now included and show in YAML like this:


Changed Job id / displayName notation

In V1.0 I picked up the displayname from the agent job and would concat them with _ to make a unique identifier. However seeing the MS tool they pick up the actual ref from the job and add the displayname as displayName in the syntax. I changed my code to behave the same notation to prevent accidental id clashes when people would have similar displaynames

This will result in the following YAML:

Changed order of triggers

Nothing special here. just the ordering of triggers are now in line to the Microsoft output

Changed order of job properties

Nothing special here. just the ordering of properties are now in line to the Microsoft output


Fixed syntax for included / excluded paths and branches notation

When testing the results in adding new functionality I had overlooked a wrongful syntax where if both included / excluded options would exist they would be noted as a single array. instead they should be noted as a single node with a child array.

Old syntax:

New Syntax:

Fixed DST bug

When winter time was arriving in Europe I made a note to test what would happen before and after DST changes would occur.

on DST changing back to winter time the script would still act as if it was in summer time resulting in too many hours extracted in the schedule.

This has been addressed. Only rare occurrence which will not be accounted for is running the script during an actual night where DST shift happens. But thats such a rare occurrence that I will not be fixing it. mostly these script run daytime anyway.

Fixed empty jobs syntax

When doing the syntax for agentless jobs I noticed how the MS Export tool returned a nice empty array in YAML notation:

When comparing this with my own results my tool would return the following:

This has been adressed for all kinds of jobs.

Fixed notation for job properties for timeout and canceltimeout

When checking my generated Syntax on these properties I received an error when trying to run them. The syntax used was:

This is wrong because it was directly taken from the REST API without conversion. The correct syntax should be:

This has been adressed for all kinds of jobs.


So that’s it for this version. I will start working on a V1.2 next which will primarily be focussed on non-Azure DevOps sources integration (Github, Gitlab, BitBucket) and the possibility to actually import the generated YAML as a new pipeline in Azure DevOps.

Again you can find the new V1.1 version on PSGallery and GitHub.

Thanks for reading and enjoy your holidays!

Share This Story, Choose Your Platform!


I am a senior Data engineer who specializes in implementing and optimizing DevOps strategies in Data projects embracing development teams to achieve their true potential.
December 28, 2020

Recent Posts