Try the new outbound dialing experience in Dynamics 365 Customer Service 

Try the new outbound dialing experience in Dynamics 365 Customer Service 

This article is contributed. See the original author and article here.

In the fast-paced world of customer service, efficient outbound calling communication is the cornerstone of success. Dynamics 365 Customer Service has long been a trusted platform for managing customer interactions. With the upcoming October release, we’ve listened to your feedback and delivered a significant enhancement that is set to transform outbound dialing.  

Currently, modifying the dialed number proves to be cumbersome given the inability to edit a digit. Additionally, the absence of number validation increases the risk of agents dialing incorrect numbers. This is especially true in the event of missing country codes. 

In the October release, you will find a more intuitive, streamlined, and efficient outbound dialing experience.

Editing flexibility

In the new outbound dialing experience, agents can continue to initiate calls from customer records. What’s changed? Now, modifying the dialed number is a breeze. The enhanced interface empowers agents to effortlessly edit the number before placing the call. This new experience also introduces auto-formatting, automatically structuring the number as agents type it. This functionality not only reduces errors but also highlights incomplete or invalid numbers. This newfound flexibility ensures accurate and effective outbound calling experiences.

Smart use of screen real estate

The improved interface is designed to optimize the available screen space. By default, the keypad is hidden, given most agents prefer to use the keyboard, which also allows for a clearer view of essential information. However, should agents need to utilize the keypad, it’s just a click away.

Recall recent numbers

Agents now have the power to swiftly call back recent numbers. With the ability to access the last 20 numbers dialed or received calls, agents can easily reconnect with customers. This feature is a time-saver and helps maintain a seamless communication flow.

Country and region support for outbound dialing

A significant advancement for administrators and agents alike is the support for specific countries and regions. Administrators can customize outbound profiles to allow calls only to selected countries or regions. This prevents accidental calls to unintended destinations, reinforcing precision in customer communication.

Intuitive profile selection and profile matching

Agents with multiple outbound profiles will appreciate the intuitive profile selection process. The dropdown menu displays the collective list of supported countries and regions from all profiles. Simplifying the process even further, agents need only enter the number they wish to dial. The system intelligently identifies the outbound profile supporting the dialed number’s country or region. This feature is coming as a fast follow in October.

The October release of Dynamics 365 Customer Service brings an outbound dialing experience with enhanced editing capabilities, smarter interface design, call history, number auto-formatting and validation, and refined country and region support. Agents can confidently and efficiently connect with customers, bolstering the delivery of exceptional customer service.

Learn more about outbound dialing

Watch a quick video demonstration.

To preview this feature, administrators should update the Settings definition for Enhanced outbound dialer experience to set the environment value to Yes. To learn more, see Call a customer in the voice channel | Microsoft Learn.

The post Try the new outbound dialing experience in Dynamics 365 Customer Service  appeared first on Microsoft Dynamics 365 Blog.

Brought to you by Dr. Ware, Microsoft Office 365 Silver Partner, Charleston SC.

Leaders in Viva Engage reach employees and beyond with storyline announcements

Leaders in Viva Engage reach employees and beyond with storyline announcements

This article is contributed. See the original author and article here.

Announcements have been a core part of Viva Engage for years but have recently become a critical way to keep employees informed and engaged with leaders. The broad delivery of announcements across Viva Engage, Viva Connections, Outlook, and Microsoft Teams means that employees can use rich engagement features like reactions, replies, and sharing from within the apps that they use every day. Analytics help track the reach of the announcements, meaning our customers have come to rely on announcements to help run their business and measure the impact their communications are having in your network.


 


We’ve taken it one step further by enabling specific employees as leaders because we know leaders want to share vision, updates, and perspectives to build culture and manage change. When leaders are selected in Viva Engage, and their audiences have been set up they can send storyline announcements. And now leaders can reach and connect with employees in their organizations and send their posts to multiple audiences. Leaders and their delegates can now configure multiple audiences and effectively target storyline announcements to them.


 


VivaEngage1.jpg


 


Leaders can now send targeted storyline announcements to different audiences


 


Leaders, and their delegates can now target storyline announcements to preconfigured audiences, expanding the leader’s ability to reach people beyond their direct reporting organization. Upon creating an announcement, the leader’s default audience will be preselected. To add additional audiences, select Change option. This will bring up the Storyline announcements options window in which the default audience can be changed for any of the configured ones. Once an audience is selected, confirm the channels before you send your message.


 


VivaEngage2.png


 


Set up multiple audiences


 


To view information about how to configure audiences, please visit Identify leaders and manage audiences in Viva Engage. To define a leader’s audience, you add individual users or groups, such as security, distribution, or Microsoft 365 groups. When you add a group, changes to the group’s membership, including nested members, automatically update the audience within 24 hours. This functionality makes it easy to apply existing groups that define a leader’s organization to define the leader’s audience in Viva Engage. Customers may have existing distribution lists that they use to communicate with an audience by email. You can add those lists to the leader’s audience in Viva Engage for continuous communication.


 


Viva Engage3.png


 


Send announcements to your audience across apps



Leaders can make an announcement and select your audience and reach people across apps. Once the announcement is delivered, your audiences can react and reply regardless of what app they receive the announcement. To make your announcements more engaging, attach images or videos, ask a question, pose a poll to your community, or draw attention to specific actions by using rich media within your announcement. Announcements made by leaders will also be highlighted in leadership corner.


 


VivaEngage4.png


 


Analyze the impact of your communication


 


When you post an announcement in Viva Engage, you can expect the message to reach your audience. From the notifications with Microsoft Teams, Outlook interactive messages, Engage notifications, we want to make sure that you understand the impact of your communications by tracking the reach of your communications and the sentiment of your audience. With conversation insights, you’ll be able to view how well your announcement has performed. With personal analytics, you can track the effectiveness across multiple posts and announcements. With audience analytics, leaders can track levels of sentiment analysis to help monitor the engagement, contributions and themes across your audience, beyond what you have sent. You can start to understand and know what your audience thinks is important and can help you identify what to post next.


 


VivaEnage5.png


 


What’s new and next for storyline….


 


Storyline can be made available for only specific employees
Storyline announcements coming to multiple tenant organizations


 


Learn more about Viva Employees Communications and Communities and stay tuned to the M365 Roadmap for the latest updates about what’s coming for Viva Engage.


 


If you are looking to share important news and information with employees, try using announcements on your storyline posts. With the speed of delivery, ability to measure reach, and a way to spark two-way engagement, announcements are an essential way to keep your employees informed.

Microsoft Mesh enters preview in October, including a new Teams experience

Microsoft Mesh enters preview in October, including a new Teams experience

This article is contributed. See the original author and article here.

We are re-imagining the way employees come together with Microsoft Mesh, a new three-dimensional (3D) immersive experience and, we are excited to announce Mesh public preview availability in October.  

The post Microsoft Mesh enters preview in October, including a new Teams experience appeared first on Microsoft 365 Blog.

Brought to you by Dr. Ware, Microsoft Office 365 Silver Partner, Charleston SC.

Azure Database for MariaDB is being retired on 19 September 2025

This article is contributed. See the original author and article here.

In the fall of 2018, we announced the general availability (GA) of Azure Database for MariaDB. Since that release five years ago, we’ve invested time and resources in Azure Database for MariaDB to further extend our commitment to the open-source community by providing valuable, enterprise-ready features of Azure for use on open-source database instances.


 


In November 2021 we released Flexible Server, the next-generation deployment option for Azure Database for MySQL. As we continue to invest in Azure Database for MySQL and focus our efforts on Flexible Server to make it the best destination for your open-source MySQL workloads, we’ve decided to retire the Azure Database for MariaDB service in two years (September 2025). This will help us focus on Azure Database for MySQL – Flexible Server to ensure that we are providing the best user experience for our customers.


 


Azure Database for MySQL – Flexible Server has enhanced features, performance, an improved architecture, and more controls to manage costs across all service tiers when compared to Azure Database for MariaDB. As a result, we encourage you to migrate to Azure Database for MySQL – Flexible Server before the Azure MariaDB retirement to experience the new capabilities of the service, including:



  • More ways to optimize costs, including support for burstable tier compute options.

  • Improved performance for business-critical production workloads that require low latency, high concurrency, fast failover, and high scalability.

  • Improved uptime with the ability to configure a hot standby on the same or a different zone, and a one-hour time window for planned server maintenance.


 


For more information about Flexible Server, see the article Azure Database for MySQL – Flexible Server.


 


Migrate from Azure Database for MariaDB to Azure Database for MySQL – Flexible Server


 


For information about how you can migrate your Azure Database for MariaDB server to Azure Database for MySQL – Flexible Server, see the blog post Migrating from Azure Database for MariaDB to Azure Database for MySQL.


 


Retirement announcement FAQs


 


We understand that you may have a lot of questions about what this announcement means for your Azure Database for MariaDB workloads. As a result, we’ve added several “frequently asked questions” in the article What’s happening to Azure Database for MariaDB?


 


For quick reference, we’ve included a few key questions and answers below.


 


Q. Why am I being asked to migrate to Azure Database for MySQL – Flexible Server


A. There’s a high application compatibility between Azure Database for MariaDB and Azure Database for MySQL, as MariaDB was forked from MySQL. Azure Database for MySQL – Flexible Server is the best platform for running all your MySQL workloads on Azure. MySQL- Flexible Server is economical and provides better performance across all service tiers, together with more ways to control your costs for less costly and faster disaster recovery.


 


Q. After the Azure Database for MariaDB retirement announcement, can I still create new MariaDB servers to meet my business needs?


A. As part of this retirement, we’ll no longer support the ability to create new MariaDB instances by using Azure portal beginning on December 19, 2023. If you do still need to create MariaDB instances to meet business continuity needs, you can use the Azure CLI to do so until March 19, 2024.


 


Q. Can I choose to continue running Azure Database for MariaDB beyond the sunset date?


A. Unfortunately, we don’t plan to support Azure Database for MariaDB beyond the sunset date of September 19, 2025. As a result, we advise you to start planning your migration as soon as possible.


 


Q. I have additional questions about the retirement. How can I find out more?


A. If you have questions, get answers from community experts in Microsoft Q&A. If you have a support plan and you need technical help, create a support request that includes the following information:



  • For Issue type, select Technical.

  • For Subscription, select your subscription.

  • For Service, select My services.

  • For Service type, select Azure Database for MariaDB.

  • For Resource, select your resource.

  • For Problem type, select Migration.

  • For Problem subtype, select Migrating from Azure for MariaDB to Azure for MySQL Flexible Server.


 


If you have questions about the information in this post, please don’t hesitate to reach out to us at AskAzureDBforMariaDB@service.microsoft.com. Thank you!

Microsoft is named a Leader in 2023 Gartner® Magic Quadrant™ for B2B Marketing Automation Platform

Microsoft is named a Leader in 2023 Gartner® Magic Quadrant™ for B2B Marketing Automation Platform

This article is contributed. See the original author and article here.

Note: As announced at Microsoft Inspire 2023, as of September 1, 2023, Microsoft Dynamics 365 Marketing and Microsoft Dynamics 365 Customer Insights have been brought together into one offering. We are retaining the existing Dynamics 365 Customer Insights name to encompass this new offer of both applications. Customers can start with one or both applications and then further invest in the application they want to scale by buying the capacity they need.

In today’s turbulent economic times, companies are facing critical business challenges such as customer acquisition, increasing customer loyalty, and maximizing lifetime value. Often, to save time, they follow a one-size-fits-all approach—resulting in impersonal marketing strategies with low customer engagement. According to the Microsoft Work Trend Index, 89 percent of marketers say they struggle with having time to do their jobs.

To meet these complex challenges, it is crucial for companies to shift their approach from traditional mass communication to personalized engagement based on a deep understanding of each customer’s preferences and actions while ensuring their marketers have more time to leverage their creative and strategic skills to engage their customers. With this very goal in mind, Microsoft launched Dynamics 365 Marketing in 2018.

We are pleased and honored to share that in a short span of five years in market, Microsoft has been recognized as a Leader within the 2023 Gartner Magic Quadrant for B2B Marketing Automation Platforms* for the second consecutive year. In this year’s report, Microsoft is positioned highest in Ability to Execute.

A Gartner Magic Quadrant for B2B Marketing Automation Platforms graph with relative positions of the market’s technology providers, including Microsoft.
Figure 1: Gartner Magic Quadrant for B2B Marketing Automation Platforms**

For Microsoft, this placement recognizes our commitment to help companies better connect with their customers at scale, across all departments, to make this simple and easy for any company with a broad range of skillsets to employ.

Accelerating the journey to more personalized customer engagement

We started our Dynamics 365 Marketing journey in April 2018. Since then, we’ve gathered feedback and continued to learn at a rapid pace to help our customers on their journey to drive meaningful customer engagement, ensure long-term loyalty, and accelerate business success. To be competitive in today’s market, organizations must harness the power of data to gain a deeper understanding of their customers, anticipate behaviors, and craft one-on-one personalized experiences across all touchpoints, including sales, marketing, business operations, and service functions. Generative AI makes these capabilities within reach for every company. That’s why we’ve brought together Dynamics 365 Marketing and Dynamics 365 Customer Insights as one offering named Dynamics 365 Customer Insights, an AI-led solution to revolutionize customer experience. The new Customer Insights enables our customers to be more flexible by giving them access to both a modern, AI-driven customer data platform (Customer Insights data application) and real-time marketing with customer journey orchestration (Customer Insights journeys application). Customers can start with one or both applications and invest in the areas where they most want to scale.

To drive the necessary customer experience (CX) transformation, companies cannot rely on piecemeal integration of sales, service, and marketing products. Gartner predicts that by 2026, 50 percent of replacement customer relationship management (CRM) sales technology decisions will involve solutions including non-sales software comprising other modules from a CRM or a CX suite.[1] However, the reality is that only a few companies are currently delivering on these expectations. Customer experiences often remain fragmented across channels and departments, leading to inconsistencies. Microsoft is uniquely positioned to help customers overcome these challenges, and Dynamics 365 Customer Insights was built exactly for this purpose—to support customers throughout their end-to-end CX journeys.

Like all Dynamics 365 offerings, Customer Insights relies on Microsoft Dataverse to store CRM software data, which enables our customers to securely store and manage their data and harness the true power of that data by removing silos across sales, service, and marketing via a unified platform approach. Customer Insights helps marketers and customer engagement professionals gain a holistic view of their customers, anticipate their needs, and discover growth opportunities. Marketers can also deliver more relevant, contextual, customer-triggered engagements through the power of Copilot in Dynamics 365 Customer Insights. Some of our most recent Copilot capabilities in Customer Insights enable marketers to:

Enabling our customers to increase their reach

Zurich Insurance Group, a global insurer serving people and businesses in more than 200 countries, wanted to optimize marketing processes to help create more personalized customer experiences. Its Switzerland business unit connects to its customers through hosting online and in-person events—but to drive the highest impact, it must be sure it invites the right customers to the right events. It wanted to improve its ability to track if customers opened event invitations—or even received them, as well as the connection to registration and attendance. It also wanted a formalized way to collect feedback or easily use engagement data to continue to optimize the sales process after the event. Zurich selected Dynamics 365 Marketing to give it the flexibility to reach customers in new ways and drive more effective follow-ups to help shape their journeys. With Dynamics 365 Marketing, Zurich increased its lead quality by over 40 percent.

Over the past decade, Natuzzi, a globally hailed creator of exceptional luxury furniture that delivers a harmonious combination of design, function, aesthetics, and ethics, has seen a rapid global expansion of its heralded luxury brand. Natuzzi lacked a customer engagement platform capable of unifying data from its retail point of sale (POS), enterprise resource planning (ERP) system, and CRM systems. The company also wanted a way to bring together its business-to-business (B2B) and business-to-consumer (B2C) related data sets to drive greater insight between audiences. Adopting Dynamics 365 Marketing and Dynamics 365 Customer Insights, Natuzzi implemented an extensive customer experience platform to transform how its luxury brand discovers and sustains its customers. It uses customer data and insights to nurture customers and prospects through personalized campaigns, delivering emails, SMS texts, promotions, events, sales appointment reminders, and other relationship-building messages.

Microsoft named a Leader by Gartner

Microsoft is named a Leader in the 2023 Gartner Magic Quadrant for B2B Marketing Automation Platforms.

Learn more about Dynamics 365 Customer Insights

We’re excited to have been recognized as a Leader in the Gartner Magic Quadrant and are committed to helping our customers unify and enrich their customer data to deliver personalized, connected, end-to-end customer journeys across sales, marketing, and service. We truly believe that bringing together Dynamics 365 Marketing and Dynamics 365 Customer Insights enables us to continue investing in capabilities that will enable stronger, insights-based marketing that helps marketers and data analysts glean insights from customer data.

Read the 2023 Gartner Magic Quadrant for B2B Marketing Automation Platforms report.

Learn more about:

Contact your Microsoft representative to learn more about the value and return on investments, as well as the latest Microsoft Dynamics 365 Customer Insights offer.


  1. Gartner Forecast Analysis: CRM Sales Software, Worldwide, Roland Johnson, Amarendra, Julian Poulter, 12 December 2022.

Source: Gartner, Magic Quadrant for B2B Marketing Automation Platforms, Rick LaFond, Jeffrey L. Cohen, Matt Wakeman, Jeff Goldberg, Alan Antin, 20 September 2023.

*Gartner is a registered trademark and service mark and Magic Quadrant is a registered trademark of Gartner, Inc. and/or its affiliates in the U.S. and internationally and are used herein with permission. All rights reserved. Gartner does not endorse any vendor, product or service depicted in its research publications, and does not advise technology users to select only those vendors with the highest ratings or other designation. Gartner research publications consist of the opinions of Gartner’s research organization and should not be construed as statements of fact. Gartner disclaims all warranties, expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.

**This graphic was published by Gartner, Inc. as part of a larger research document and should be evaluated in the context of the entire document. The Gartner document is available upon request from Microsoft.


The post Microsoft is named a Leader in 2023 Gartner® Magic Quadrant™ for B2B Marketing Automation Platform appeared first on Microsoft Dynamics 365 Blog.

Brought to you by Dr. Ware, Microsoft Office 365 Silver Partner, Charleston SC.

Revolutionizing Requirement Gathering: Azure DevOps Meets Azure OpenAI using Semantic kernel

Revolutionizing Requirement Gathering: Azure DevOps Meets Azure OpenAI using Semantic kernel

This article is contributed. See the original author and article here.

This blog is a deep dive into the future of requirement gathering. This blog explores how Azure DevOps and Azure OpenAI are joining forces to transform the way we manage project requirements. From automated requirement generation to intelligent analysis, learn how these powerful tools are reshaping the landscape of project management. Stay tuned for an enlightening journey into the world of AI-powered requirement gathering!

Setting up environment

Pre-requisite

Visual studio code

    Please install below extension

    – Jupyter (Publisher- Microsoft)

    – Python (Publisher- Microsoft)

    – Pylance (Publisher- Microsoft)

    – Semantic Kernel Tools (Publisher- Microsoft)

Python

  Please install below python packages

    – PIP

    – Semantic-kernel

Download the content from GitHub repo

 


Define the Semantic Function to generate feature description-

Now that you have below mentioned folder structure.

image1.png

 

Create semantic function for generating Feature description.

The first step is to define a semantic function that can interpret the input string and map it to a specific action. In our case, the action is to generate feature description from title. The function could look something like this:

 1. Create folder structure

    Create /plugins folder

    Create folder for semantic plugins inside Plugins folder, in this case its “AzureDevops”. (For more details on plugins)

    Create Folder for semantic function inside the skills folder ie ‘/plugin/AzureDevops’, in this case “FeatureDescription” (For more details on functions)

2. Define semantic function

    Once we have folder structure in place lets define the function by having

        ‘config.json’ with below JSON content for more details on content refer here.

{
  "schema": 1,
  "description": "get standard feature title and description",
  "type": "completion",
  "completion": {
    "max_tokens": 500,
    "temperature": 0.0,
    "top_p": 0.0,
    "presence_penalty": 0.0,
    "frequency_penalty": 0.0
  },
     "input": {
          "parameters": [
               {
               "name": "input",
               "description": "The feature name.",
               "defaultValue": ""
               }
          ]
     }
}


 


In above file, we are defining semantic function which accept ‘input’ parameter to perform “get standard feature title and description” as mentioned in Description section.

 

    Now, let’s put the single shot prompt for our semantic function in ‘skprompt.txt’. where ‘{{input}}’ where our input ask would be replaced.


 

Create feature title and description for {{$input}}  in below format
Feature Title:"[Prodive a short title for the feature]"
Description: "[Provide a more detailed description of the feature's purpose, the problem it addresses, and its significance to the product or project.] 
 
User Needs- 
[Outline the specific user needs or pain points that this feature aims to address.] 
 
Functional Requirements:-
- [Requirement 1] 
- [Requirement 2] 
- [Requirement 3] 
- ... 
 
Non-Functional Requirements:-
- [Requirement 1] 
- [Requirement 2] 
- [Requirement 3] 
- ... 
 
Feature Scope: 
[Indicates the minimum capabilities that feature should address. Agreed upon between Engineering Leads and Product Mangers] "


 



Execute above semantic function in action.



Rename “.env.example’ as ‘.env’ and update the parameters with actual values

Open notebook “Create-Azure-Devops-feature-from-requirement-text” in visual studio code and follow the steps mentioned to test

        Step 1 Install all python libraries

!python -m pip install semantic-kernel==0.3.10.dev0
!python -m pip install azure-devops







Step 2 Import Packages required to prepare a semantic kernel instance first.

import os
from dotenv import dotenv_values
import semantic_kernel as sk
from semantic_kernel import ContextVariables, Kernel # Context to store variables and Kernel to interact with the kernel
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, OpenAIChatCompletion # AI services
from semantic_kernel.planning.sequential_planner import SequentialPlanner # Planner

kernel = sk.Kernel() # Create a kernel instance
kernel1 = sk.Kernel() #create another kernel instance for not having semanitc function in the same kernel 

useAzureOpenAI = True

# Configure AI service used by the kernel
if useAzureOpenAI:
    deployment, api_key, endpoint = sk.azure_openai_settings_from_dot_env()
    kernel.add_chat_service("chat_completion", AzureChatCompletion(deployment, endpoint, api_key))
    kernel1.add_chat_service("chat_completion", AzureChatCompletion(deployment, endpoint, api_key))
else:
    api_key, org_id = sk.openai_settings_from_dot_env()
    kernel.add_chat_service("chat-gpt", OpenAIChatCompletion("gpt-3.5-turbo", api_key, org_id))


 


  Step 3 Importing skills and function from folder

# note: using skills from the samples folder
plugins_directory = "./plugins"

# Import the semantic functions
DevFunctions=kernel1.import_semantic_skill_from_directory(plugins_directory, "AzureDevOps")
FDesFunction = DevFunctions["FeatureDescription"]  


 


– Step 4 calling the semantic function with feature title to generate feature description based on predefined template

resultFD = FDesFunction("Azure Resource Group Configuration Export and Infrastructure as Code (IAC) Generation")
print(resultFD)



 

 

Create native function to create features in Azure DevOps


 – Create file “native_function.py” under “AzureDevOps” or download the file from repo.

 – Copy the code base and update Azure Devops parameter. you can access this as context parameter but for simplicity of this exercise, we kept it as hardcoded. Please find below code flow

        – Importing python packages

        – Defining class ‘feature‘ and native function as “create” under “@sk_function”.

        – Call semantic function to generate feature description.

        – Use this description to create Azure DevOps feature.

from semantic_kernel.skill_definition import (
    sk_function,
    sk_function_context_parameter,
)

from semantic_kernel.orchestration.sk_context import SKContext
from azure.devops.v7_1.py_pi_api import JsonPatchOperation

from azure.devops.connection import Connection
from msrest.authentication import BasicAuthentication
import base64
from semantic_kernel import ContextVariables, Kernel
import re
class feature:
    def __init__(self, kernel: Kernel):
        self._kernel = kernel
    _function(
        description="create a Azure DevOps feature with description",
        name="create",
    )
    _function_context_parameter(
        name="title",
        description="the tile of the feature",
    )
    _function_context_parameter(
        name="description",
        description="Description of the feature",
    )
    async def create_feature(self, context: SKContext) -> str:
        feature_title = context["title"]
        get_feature = self._kernel.skills.get_function("AzureDevOps", "FeatureDescription")
        fdetails = get_feature(feature_title)
        # Define a regular expression pattern to match the feature title
        pattern = r"Feature Title:s+(.+)"
        # Search for the pattern in the input string
        match = re.search(pattern, str(fdetails))
        # Check if a match was found
        if match:
            feature_title = match.group(1)
        # Define a regular expression pattern to match the feature description
        # Split the string into lines
        lines = str(fdetails).split('n')
        lines = [line for index, line in enumerate(lines) if index not in [0]]
        description = 'n'.join(lines)
        jsonPatchList = [] 
        #description=context["description"]
        targetOrganizationName= "XXX"
        targetProjectName= "test"
        targetOrganizationPAT = "XXXXXX"
        workItemCsvFile= "abc"
        teamName = "test Team"
        areaName = teamName
        iterationName ="Sprint 1"
        targetOrganizationUri='https://dev.azure.com/'+targetOrganizationName
        credentials = BasicAuthentication('', targetOrganizationPAT)
        connection = Connection(base_url=targetOrganizationUri, creds=credentials)
        userToken = "" + ":" + targetOrganizationPAT
        base64UserToken = base64.b64encode(userToken.encode()).decode()
        headers = {'Authorization': 'Basic' + base64UserToken}
        core_client = connection.clients.get_core_client()
        targetProjectId = core_client.get_project(targetProjectName).id
        workItemObjects = [
                {
                    'op': 'add',
                    'path': '/fields/System.WorkItemType',
                    'value': "Feature"
                },
                {
                    'op': 'add',
                    'path': '/fields/System.Title',
                    'value': feature_title
                },
                {
                    'op': 'add',
                    'path': '/fields/System.State',
                    'value': "New"
                },
                {
                    'op': 'add',
                    'path': '/fields/System.Description',
                    'value': description
                },
                {
                    'op': 'add',
                    'path': '/fields/Microsoft.VSTS.Common.AcceptanceCriteria',
                    'value': "acceptance criteria"
                },      
                {
                    'op': 'add',
                    'path': '/fields/System.IterationPath',
                    'value': targetProjectName+""+iterationName
                }
            ]
        jsonPatchList = JsonPatchOperation(workItemObjects)
        work_client = connection.clients.get_work_item_tracking_client()
        try:
            WorkItemCreation = work_client.create_work_item(jsonPatchList.from_, targetProjectName, "Feature")
        except Exception as e:
            return feature_title+"Feature created unsuccessfully"
        return feature_title+" Feature created successfully"








 

Let’s execute native function


Let’s go back to notebook.

        –   Step 5 Importing native function

    

from plugins.AzureDevops.native_function import feature
math_plugin = kernel.import_skill(feature(kernel1), skill_name="AzureDevOps")
variables = ContextVariables()



 

 –   Step 6 Executing native function by putting natural language queries in title field

variables["title"] = "creating a nice pipelines"
variables["description"] = "test"
result = await kernel.run_async(
                math_plugin["create"], input_vars=variables
            )
print(result)


 

Use of Sequential planner to dynamical create N number of features.

– Step 6 Initiate sequential planner with semantic kernel

from plugins.AzureDevops.native_function import feature
planner = SequentialPlanner(kernel)
# Import the native functions
AzDevplugin = kernel.import_skill(feature(kernel1), skill_name="AzureDevOps")
ask = "create two Azure DevOps features for one with title creating user and one with creating work items with standard feature title and description"
plan = await planner.create_plan_async(goal=ask)
for step in plan._steps:
        print(step.description, ":", step._state.__dict__)


This would generate a plan to meet the goal which is above case is “create two Azure DevOps features for one with title creating user and one with creating work items with standard feature title and description” using available function in kernel.

– Step 7 once the plan is created, we can use this plan and execute it to create multiple features.


print("Plan results:")
result = await plan.invoke_async(ask)
for step in plan._steps:
        print(step.description, ":", step._state.__dict__)


 

This will create two features one for user and one for work item. Using this block, you can create a semantic function-based solution that can interpret natural language requirement document or transcript of reequipment call and use it to create features in azure DevOps. You can increase the accuracy of this solution by brining multi-shot prompt and historical data using collections.