Move Work Items between Projects/Organizations

As projects evolve, they need maintenance and sometimes migration. Maybe there has been a reorg within the company, or the work was created in a temporary holding spot but now needs a permanent home. Whatever the reason, moving work items between projects or organizations in Azure DevOps is no simple feat. Today, you could utilize the REST API and Excel to accomplish this. However, learning how to leverage the REST API can be tricky. Getting the Excel sheet just right is also a challenge. We at PRAKTIK developed a set of tools to make this effortless.

What is PRAKTIK’s Azure DevOps Migration Tools?

These tools are a set of proprietary utilities that enable the migration of various artifacts between a source instance of Azure DevOps and a target Azure DevOps instance using REST APIs. The source can be on-premises or in the cloud.

The focus of these tools is to migrate your data in as high-fidelity a way as possible. So, these tools are designed to retain the entire history of the data  while you migrate your work items, test plans, suites, and teams from one team project or organization to another. The tools also retain things like sprint history, shared queries, project iterations, and attachments. This is paramount, especially for long-standing projects. The history of a project can help with planning for the future and understanding what worked in the past.

Furthermore, during the migration, you’ll have the ability to re-map fields if desired. For example, all work items assigned to one identity can be automatically reassigned to another identity. This is helpful in reorgs in which team members are shuffled between teams and no longer work on a particular project.

However, data retention doesn’t stop with history. These migration tools also retain relationships between work items. This means you’ll keep the context of your work items to enable better future development. You’ll also keep source code GIT commits and custom work item fields. Therefore, you won’t have to redo any of the work required to create custom work items or lose any of that documentation.

Because the tools are driven by the Azure DevOps REST APIs, some of the migration functionality is limited by the capabilities of the API. Although the work items will store the old work item ID for easy audit and cross-reference, work items will be assigned new IDs in the target Azure DevOps instance.

Advantages of Working with PRAKTIK

When you choose to work with PRAKTIK and take advantage of this proprietary solution, you can be confident in the knowledge that your migration is being handled by a team of experts. We have performed hundreds of work item migrations, which means we can assist with important migration decisions and even fast-track the migration. We also perform dry runs before the actual migration. This gives you the ability to validate the migration while your team continues to work in the source system.

PRAKTIK’s Azure DevOps Migration Tools provide a comprehensive solution for migrating work items between Azure DevOps instances, offering flexibility and high fidelity while ensuring data integrity during the migration process. Contact our team of experts for more information or to get started today.

ServiceNow-Azure DevOps Integration

At this point in your DevOps journey, you might have dozens of different tools that you are trying to get to work together, not to mention the tons of data sprawling across each system. Each tool is vital for your solution, but at this point, working with each tool individually is taking a toll on your productivity and efficiency. ServiceNow is a cloud-based, AI-enhanced technology that can help you orchestrate and automate your processes. Furthermore, it integrates with Azure DevOps, so you don’t have to consider changing tools to take advantage of it.

Key Integration Benefits


The integration of ServiceNow and Azure DevOps is not just about connecting two platforms; it’s about creating a cohesive ecosystem that supports rapid and reliable delivery. For instance, this integration will provide you with automated incident management. So, when an issue comes up with your pipeline in Azure DevOps, ServiceNow automatically creates an incident to ensure quick attention and resolution. ServiceNow can also orchestrate releases and manage deployment schedules while Azure DevOps supplies the tools for continuous integration and continuous delivery (CI/CD).

The integration is bidirectional, meaning that changes made in Azure DevOps can be mirrored in ServiceNow. This provides key visibility and ensures all changes are tracked and managed according to service management policies.

Furthermore, this integration helps eliminate silos between development and operations teams. Therefore, there will be an increase in operational efficiency and collaboration between teams. When your teams work more effectively and efficiently, the time-to-market for products is reduced, resulting in an overall increase in customer satisfaction and a decrease in costs.

How to Integrate Azure DevOps and ServiceNow

The integration process between Azure DevOps and ServiceNow could not be simpler. There is an extension in the Marketplace that does all the heavy lifting for you.

The extension supports out-of-the-box compatibility with your existing DevOps toolchain, from Jira to Jenkins and beyond. You’ll be able to plan, track, and update your tasks from a single application. Additionally, this extension will allow you to model your pipeline in ServiceNow to enhance end-to-end visibility. Your team will also benefit from the insights through reporting and analytics. ServiceNow can then use these insights to automatically create change requests, which will accelerate change and allow your team to put their time into what matters.

For organizations looking to streamline their DevOps practices, this integration creates a path to enhanced efficiency, collaboration, and insight-driven decision-making. For more information or to get started, contact our team of experts at PRAKTIK.


Top 5 Azure DevOps Features in Q1 2024

The Azure DevOps team hit the ground running during Q1 2024. In this post, we will highlight some of the new and exciting features now available to help you enhance your development experience.

Show GitHub pull request details

In Azure Boards, there is a new view to provide more information regarding the status of a pull request. While still in preview, this experience provides information such as a pull request needing review, still being in draft mode, or having status checks running. This information is visible without even having to open the pull request. To participate in this preview, contact the team directly.

Add link to GitHub commit or pull request

After several weeks in preview, the enhanced experience for linking work items to GitHub is now generally available in the New Boards Hub. You’ll no longer need to have multiple windows open, switch between Azure DevOps and GitHub, and copy/paste the URL of the GitHub PR. Now, you’re able to search for and select the desired repository, then drill down to find and link to a specific pull request or commit.

Resource utilization alerts for Azure Pipeline agents

Last year, you saw the ability to monitor memory and disk utilization by the Pipelines agents. Now, you have enhanced visibility of resource constraint alerts. This update will help you understand why pipeline jobs are failing and to ensure you’re able to get sufficient resources for your agent.

Custom CodeQL queries

You can now create custom CodeQL queries in Code scanning alerts for GitHub Advanced Security for Azure DevOps. With this feature, you can craft queries tailored to identify issues specific to your codebase. You can create and publish packs containing custom queries, execute these queries in your pipelines, and customize vulnerability detection.

Team Automation Rules is generally available

Previously, the overall state of a User Story would remain unchanged even after child tasks have been updated. You could automate the closure of the parent item, but it required web hooks and custom code, and really wasn’t configurable. You can now configure each backlog level to automate the opening and closing of work items based on the state of its child items. Each backlog level can be configured differently depending on the preferences of your team.

For more information, contact our team of experts here at PRAKTIK.

Deploying iPhone Apps Written in Xcode via Azure DevOps

Today, businesses increasingly rely on mobile applications to engage with customers, streamline operations, and drive growth. In the U.S., iOS leads Android in market share, which means deploying high-quality iPhone apps is paramount. Let’s explore how we can use Azure DevOps to facilitate the deployment of Xcode-based iOS apps.

Azure DevOps for Xcode Deployment

Xcode is Apple’s integrated development environment (IDE) for macOS and is used to develop software for the Apple ecosystem. Once your app is created for iOS in Xcode, you can use Azure DevOps to deploy it. First, you’ll create the Azure DevOps pipeline for your project and link your GitHub repository. You’ll also configure the pipeline to use the appropriate Xcode version for your project.

For your build agent, you have options. Xcode is preinstalled on Microsoft-hosted macOS agents if you prefer not to set up or use your own infrastructure for your build agent. You can, of course, use your own agent.

Next, you’ll customize the pipeline to your needs and define build steps, tests, and packaging options. By using the App Center Distribute task, you can distribute your app to a group of beta testers or promote the app in the store. The Apple App Store extension will allow you to release your app to end users and automate interaction with the App Store.


Deploying iPhone apps written in Xcode via Azure DevOps empowers businesses to deliver high-quality experiences efficiently. By embracing CI/CD practices, you can enhance user satisfaction, reduce time-to-market, and drive business success. Furthermore, you’ll be able to continue to enjoy the same security and insights you already use in Azure DevOps, while making the deployment of your iOS apps more cost-effective and scalable.

For more information, or to get started today, contact our team of experts here at PRAKTIK.



AI-Based Pull Request Reviews

With the popularity ChatGPT, it was only a matter of time before developers began to use this technology to automate manual processes that require a little more finesse, such as reviewing pull requests.  Pull requests are a common practice in software development, where developers submit their code changes to a shared repository for review and approval by other developers. This process helps ensure that the code is consistent, readable, and free of errors or bugs. However, doing this manually can be time-consuming and tedious, not to mention subjective.

This is where artificial intelligence can help. Using Open AI’s Generative Pre-Trained Transformer (GPT) models, AI-based pull request reviews aim to automate and improve the quality and efficiency of code reviews.


Benefits and Challenges

Since AI does not have human limitations, it can review code changes in seconds or minutes. These changes will be consistent, objective, and there will be improved code quality and security as a result. However, the decisions made by the AI are based upon a predetermined set of rules. These predefined rules may have some inherent bias or error due to biased data. In addition, while we as people have the capacity for nuance and context, AI doesn’t always capture this. For this reason, among others, there is still a need for human oversight and a need for humans to be able to intervene or override the AI’s decisions entirely.

Examples of AI-Based Pull Request Review Services

Several services are already making the leap forward into artificial intelligence-based pull request reviews. One such service is CodeRabbit. This service uses OpenAI’s most advanced system in order to review pull requests. CodeRabbit can also review code line-by-line and suggest changes, provide a summary and release notes of a pull request, and even allow for in-context conversation about the code. This service is intended to be used as a GitHub Action.

Another service is found as an extension to Azure Pipelines: GPT Pull Request Review. This extension has the option of using Azure Open AI service, but you can also choose which Open AI model you prefer. This extension is a task is your build definition and can be found in the Visual Studio Marketplace.

AI-based pull request reviews are a promising and exciting innovation that can transform the way developers write, review, and maintain code. For more information, or to get started today, contact our team of experts here at PRAKTIK.

Top 5 Azure DevOps Features in Q4 2023

Although Q4 is riddled with holidays and long weekends, the Azure DevOps team still managed to deliver innovative and exciting features. In this post, we will highlight some of these new features that were released in Q4 2023.

GitHub Integration - Improved AB# validation (private preview)

When linking to a Pull Request using the AB#{ID} syntax, you only know if the link is successful by looking at the work item or notice the ID turn into a link. Q4 saw a private preview featuring enhancements to the Azure Boards GitHub experience to better inform you of the validity of a work item. This helps you identify and fix bad links before a Pull Request is merged. To be a part of the private preview, contact the team directly.

Work item filtering

In the past, you needed to create a custom query in order to find and access a particular piece of data. Now, though, finding this data is much easier with a feature called work item filtering. Work item filtering will allow you to hover over your work item chart for a quick overview. You can also go into specific chart segments for detailed insights.

New version of the Azure DevOps Web Extension SDK

The Azure DevOps Web Extension SDK got an update in Q4 that provides support for ES (ECMAScript) modules in addition to the existing AMD (Asynchronous Module Definition) modules. This means you can now import SDK using ES module syntax, which improves performance and reduces the size of the application.


Switch between HTML or Markdown on comments

Previously, there was a private preview introduced to enable Markdown for comments on work items. This was intended to eventually replace the existing HTML editor entirely. Following feedback, however, now you can switch between Markdown and HTML editors at the comment level. This will allow you to leave comments in the way that is most natural and productive to you.

Improved YAML validation

YAML is a powerful tool for building your pipelines, but only when the syntax is correct. To check this, you can use the Azure Pipelines web editor’s Validate functionality. As of Q4, YAML validation with this tool is even more thorough when it comes to expressions. Azure Pipelines will detect incorrect variable definitions and YAML conditions at the pipeline, stage, and job level.


For more information,, contact our team of experts here at PRAKTIK.

How to Deploy Static Web Apps with Azure DevOps

Static web apps are websites that consist of static content such as HTML, CSS, and JavaScript files. They can also have a serverless backend powered by Azure Functions. Static web apps are fast, secure, and easy to develop and maintain. They are ideal for modern web frameworks such as React, Angular, Vue, and Blazor. In this article, we will show you how to deploy static web apps using Azure DevOps.

Azure Static Web Apps

Azure Static Web Apps is a service that enables you to deploy static web apps to a global CDN with a custom domain, SSL certificate, authentication, and authorization. This service also integrates with Azure DevOps Services, a cloud-based platform for DevOps practices such as version control, planning, testing, and continuous delivery.

Deploy Static Web Apps Using Azure 

Deploying Static Web Apps with Azure is a relatively straightforward process. You will need a static web app project hosted in an Azure DevOps repository and an Azure subscription.

The first step is to create an Azure Static Web App resource in the Azure portal.

Next, you need to configure a pipeline in Azure DevOps with the repository where your code lives. You can use the Azure DevOps portal or the YAML editor to create and edit your pipeline. This will provide you with a deployment token. Make sure this token is imported in using a Powershell script, or you can add it manually. The code in your YAML file will define a simple pipeline that triggers upon changes to the main branch of your repo, uses an Ubuntu virtual machine, and runs the Azure Static Web Apps task. This task is native in Azure DevOps, so there is no concern about compatibility.

Finally, run your pipeline. If you immediately navigate to the URL for your web app, you’ll see the below message. After a few minutes, the pipeline will finish running, and your content will show up. Following your deployment, you can also check out deployment logs and build outputs. Your static web app is up and running!

For more information, or to get started today, contact our team of experts here at PRAKTIK.

Top 5 Azure DevOps Features in 2023 Q3

Azure DevOps is constantly coming out with new features to help improve your productivity, security, and quality. In this blog post, we will highlight some of these new features that were released in Q3 2023.

GitHub Advanced Security for Azure DevOps

One of the major initiatives in Q3 was the general availability of GitHub Advanced Security (GHAS) for Azure DevOps. This feature allows you to leverage the power of GitHub’s code scanning and secret scanning capabilities within your Azure DevOps repositories. You can also use third-party security analysis tools that generate results in SARIF format and display them in the Advanced Security Code Scanning alerts hub. Additionally, you can use custom CodeQL queries to find and fix vulnerabilities in your code. In short, GHAS helps you secure your code and protect your assets from malicious actors. Any project collection administrator can now enable Advanced Security for their organization, projects, and repos from the Project Settings or Organization Settings.

CodeQL code scanning now supports Swift

Speaking of security, CodeQL code scanning now includes Swift. This means that developers working on applications for Apple platforms can take advantage of code security analysis. This analysis includes the detection of path injection, risky web view fetches, various cryptographic misuses, and other forms of unsafe handling or processing of unfiltered user data.

Centralized control for building PRs from forked GitHub repos

One of the great things about GitHub is the ability to have the community work together on a project and give suggestions. However, this can come with risks, particularly those associated with fork builds. Forks can be dangerous because they come from outside your organization. Managing public repositories can come with a substantial amount of work to maintain security standards. Now, there is an organization-level control for defining how pipelines build pull requests from forked GitHub repos. The new setting is called Limit building pull requests from forked GitHub repositories and works at organization and project level. Furthermore, for new organizations, pull requests from forked repositories are securely built by default.

Azure Artifacts support for Cargo Crates

Azure Artifacts now offers native support for Cargo crates. Rust developers and teams can now consume, publish, manage, and share their Cargo crates seamlessly, all while using Azure's robust infrastructure and staying in the familiar Azure DevOps environment. This support is in public preview. You can get started by navigating to your Azure DevOps project, selecting Artifacts, and following the instructions to connect your Rust project to your Azure Artifacts feed.

Workload identity federation in Azure Pipelines

Azure Pipelines now offers workload identity federation in public preview. Workload identity federation uses an industry-standard technology, Open ID Connect (OIDC), to simplify the authentication between Azure Pipelines and Azure. Instead of certifications that must be manually changed, workload identity federation allows you to create an identity with an external identity provider. This identity establishes a trust relationship with protected resources and is able to access them securely. This also eliminates the risk of leaking stored secrets or having credentials expire.

To learn more about these features and learn how they can empower you and your team, contact our experts here at PRAKTIK.

How to Migrate Software Assets for a Merge, Acquisition, or Divestiture

Migrating software assets from one platform to another is a common scenario that many software companies face. Whether it is due to a merger, acquisition, divestiture, or simply a change of strategy, moving software assets can be a complex and challenging process that requires careful planning and execution.

Migrating Azure DevOps instance

If you are migrating between Azure DevOps instances, you can use the Azure DevOps Migration Tools. This is a set of open-source tools that can help with migrating data between Azure DevOps instances or organizations. It supports migrating projects, repositories, work items, pipelines, test plans, artifacts, and more. It even allows you to perform a test migration and validate the results before importing them to the target instance.

Alternately, you can leverage the Azure DevOps REST API to export data from the source organization and import it into the target organization. This requires more manual effort than the migration tools, but it is more configurable for scenarios in which you have specific requirements.

Migrating Git Repository Services

Migrating your web-based Git repository service (such as GitHub, GitLab, or Bitbucket) has different challenges and considerations than an Azure DevOps migration. One of the simplest ways to migrate between instances is to back up the existing instance and restore it on the new instance. Administrators would then use the Users API to migrate users to this new instance.

You can also migrate projects using file exports. This method can be a little tedious, as you are migrating your projects one by one. This method also does not correctly preserve history.

Leveraging the REST API is an option for migrating a Git instance as well. This will still require some heavy lifting manually, but it is a great option for migrating all your data and configuring to your needs. However, you will need to migrate your Container Registry over a series of Docker pulls and pushes.

Migrating Jira Instance

If you are migrating from one Jira instance to another, you can use the Project Configurator for Jira. This tool has an export function that packs your data into a ZIP file that you can then transfer to your target server. Or, again, leveraging the REST API is an option for migrating your Jira instance.

Additionally, if you choose to migrate from Jira to Azure DevOps, there are many tools available to make this transition as simple as possible.

Key Takeaways

The method by which assets are migrated is vitally important to the success of the migration. The compatibility, interoperability, and performance of the software assets need to be ensured across different platforms, systems, and environments. This may involve testing, debugging, modifying, integrating, and deploying the software assets. The software assets may also need to be updated, patched, or upgraded to meet new standards and expectations.

In addition, it is often advisable to do a test migration to ensure this compatibility and performance. This would allow for unforeseen circumstances to be observed and handled without jeopardizing the success of the migration as a whole.

For more information, or to get started with your own migration, contact our team of experts here at PRAKTIK today.

Azure DevOps vs. GitLab

Continuous integration and continuous delivery (CI/CD) are essential practices for modern software development. They enable faster and more reliable delivery of software products by automating the build, test, and deployment processes. There are many tools available for implementing CI/CD, such as Azure DevOps and GitLab.

Azure DevOps

Azure DevOps is a cloud-based platform that provides a set of services for teams to share code, track work, and ship software. It integrates well with Microsoft tools and supports various platforms and languages. It includes Azure Repos for Git hosting, Azure Pipelines for CI/CD, Azure Boards for agile planning, Azure Artifacts for package management, and Azure Test Plans for testing. When implementing CI/CD, you can decide to only use Pipelines, or you can use all the services for a full and seamless DevOps lifecycle.


GitLab is an open-source self-hosted platform that offers a complete solution for the entire DevOps lifecycle. It can be deployed on any infrastructure and supports a wide range of technologies and integrations, though some have said it doesn't run as well on Windows. GitLab's message is: "One platform to empower dev, sec, and ops teams." The features available for use depend on the tier of GitLab selected, each with its own cost.


Compare and Contrast

When it comes to actually creating a pipeline, it is important to consider to the time cost of starting up. Azure DevOps has a YAML pipeline editor that makes it much easier to create and edit the pipelines. While GitLab also has a Pipeline Wizard, it expects you to create and maintain a YAML template as code. Conversely, the Azure DevOps wizard doesn’t require you to write any YAML. Furthermore, GitLab doesn't provide a visual editor for build and release orchestration like Azure DevOps. This can serve as an impedance for certain teams.

In terms of pricing, these tools vary greatly. Azure DevOps has a flexible pricing structure, which offers a free tier for up to five users and 1,800 minutes of build time per month. This is ideal for small teams or projects that do not require a lot of resources or features.  GitLab can be expensive for smaller teams, as it offers a free tier for unlimited users but limited features. To access more features and functionalities, users must pay a monthly or annual fee that can range from $29 to $99 per user per month. This is compared to the $6 per user per month for Azure DevOps Services.

If your ecosystem already has several Microsoft tools, Azure DevOps may be a better choice for your CI/CD needs. Additionally, it is customizable and integrates with other, third-party tools through plugins in the Visual Studio Marketplace. Conversely, GitLab focuses more on using its own native tools and does not provide a marketplace for CI/CD plugins. This may mean an additional time cost of having to learn a new tool instead of being able to use whatever tool works best for you.


When deciding which CI/CD tool is right for you, it is important to look at all aspects of what development would look like. The tool you choose should do nothing but enhance your team and enable them to go create great solutions. For more information, contact our team of experts here at PRAKTIK.