{"id":63093,"date":"2024-07-28T11:04:05","date_gmt":"2024-07-28T05:34:05","guid":{"rendered":"https:\/\/www.tothenew.com\/blog\/?p=63093"},"modified":"2024-07-29T09:29:59","modified_gmt":"2024-07-29T03:59:59","slug":"transforming-notifications-transitioning-from-office-365-connectors-to-workflows","status":"publish","type":"post","link":"https:\/\/www.tothenew.com\/blog\/transforming-notifications-transitioning-from-office-365-connectors-to-workflows\/","title":{"rendered":"Transforming Notifications: Transitioning from Office 365 Connectors to Workflows"},"content":{"rendered":"<h2><strong>Introduction<\/strong><\/h2>\n<p>As Microsoft Teams evolves, so do its features and functionalities. Recently, Microsoft announced the deprecation of O365 connectors within Teams, encouraging users to migrate to the more flexible and secure Workflows app. If you rely on O365 connectors for notifications and integrations, this blog will help you transition smoothly to using Workflows.<\/p>\n<div id=\"attachment_63416\" style=\"width: 1063px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63416\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-63416 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/noti.png\" alt=\"notification\" width=\"1053\" height=\"112\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/noti.png 1053w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/noti-300x32.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/noti-1024x109.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/noti-768x82.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/noti-624x66.png 624w\" sizes=\"(max-width: 1053px) 100vw, 1053px\" \/><p id=\"caption-attachment-63416\" class=\"wp-caption-text\">notification<\/p><\/div>\n<p>This guide outlines the benefits of switching to<strong> Power Automate Workflows<\/strong> and practical steps to implement this change effectively.<\/p>\n<div id=\"attachment_63436\" style=\"width: 635px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63436\" decoding=\"async\" loading=\"lazy\" class=\"size-large wp-image-63436\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/power-automate-1024x531.webp\" alt=\"power automate\" width=\"625\" height=\"324\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/power-automate-1024x531.webp 1024w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/power-automate-300x156.webp 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/power-automate-768x398.webp 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/power-automate-624x324.webp 624w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/power-automate.webp 1151w\" sizes=\"(max-width: 625px) 100vw, 625px\" \/><p id=\"caption-attachment-63436\" class=\"wp-caption-text\">power automate<\/p><\/div>\n<h3><span style=\"text-decoration: underline;\"><strong>Understanding the Deprecation<\/strong><\/span><\/h3>\n<p>The deprecation of O365 connectors within Teams means that these connectors will no longer function. This change aims to enhance security and provide more robust integration capabilities through the Workflows app. Here\u2019s what you need to know:<\/p>\n<ol>\n<li><strong>Timing<\/strong>: Starting <strong>August 15th, 2024<\/strong>, all new Connector creation will be blocked. By <strong>October 1st, 2024<\/strong>, all existing connectors will stop working. Official announcement <a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/retirement-of-office-365-connectors-within-microsoft-teams\/\">here<\/a>.<\/li>\n<li><strong>Impact<\/strong>: Notifications and integrations currently managed by O365 connectors will stop working. You need to migrate to Workflows to maintain these functionalities.<\/li>\n<\/ol>\n<h3><span style=\"text-decoration: underline;\"><strong>Why Transition?<\/strong><\/span><\/h3>\n<ol>\n<li><strong>Upcoming Retirement<\/strong>: O365 connectors will be fully deprecated by October 1, 2024, making it imperative to migrate to a supported solution.<\/li>\n<li><strong>\u00a0Enhanced Features<\/strong>: Power Automate workflows provide more robust capabilities for automating processes, customizing notifications, and integrating with a broader range of services.<\/li>\n<li><strong>Security and Compliance<\/strong>: Power Automate workflows are built on a secure architecture, aligning with Microsoft\u2019s initiatives to safeguard user data.<\/li>\n<\/ol>\n<h3><span style=\"text-decoration: underline;\"><strong>Benefits of Power Automate Workflows<\/strong><\/span><\/h3>\n<ol>\n<li><strong>Greater Flexibility<\/strong>: You can create adaptive cards that allow for rich interactions, such as buttons and links, enhancing user engagement.<\/li>\n<li><strong>Dynamic Content<\/strong>: Workflows can pull in job parameters, making messages more informative and tailored to your team\u2019s needs.<\/li>\n<li><strong>Wide Integration Options<\/strong>: Power Automate supports a wide array of services, enabling seamless notifications across different platforms.<\/li>\n<\/ol>\n<h3><span style=\"text-decoration: underline;\"><strong>Step-by-Step Migration Guide<\/strong><\/span><\/h3>\n<p><strong>Step 1: Set Up Workflows in MS Teams.<\/strong><\/p>\n<ul>\n<li>Sign in to your Microsoft Teams account. Find workflows on the left panel.<\/li>\n<li>\u00a0Click on create a new flow.<\/li>\n<\/ul>\n<div id=\"attachment_63417\" style=\"width: 1054px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63417\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-63417 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-12-50-34.png\" alt=\"create workflow\" width=\"1044\" height=\"444\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-12-50-34.png 1044w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-12-50-34-300x128.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-12-50-34-1024x435.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-12-50-34-768x327.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-12-50-34-624x265.png 624w\" sizes=\"(max-width: 1044px) 100vw, 1044px\" \/><p id=\"caption-attachment-63417\" class=\"wp-caption-text\">create workflow<\/p><\/div>\n<ul>\n<li>Select the template \u201c<strong>Post to a channel when a webhook request is received<\/strong>\u201d<\/li>\n<\/ul>\n<div id=\"attachment_63419\" style=\"width: 1058px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63419\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-63419 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-24-31.png\" alt=\"Setup Workflow\" width=\"1048\" height=\"523\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-24-31.png 1048w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-24-31-300x150.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-24-31-1024x511.png 1024w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-24-31-768x383.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-24-31-624x311.png 624w\" sizes=\"(max-width: 1048px) 100vw, 1048px\" \/><p id=\"caption-attachment-63419\" class=\"wp-caption-text\">Setup Workflow<\/p><\/div>\n<ul>\n<li>Next, Provide the flow name.<\/li>\n<\/ul>\n<div id=\"attachment_63420\" style=\"width: 974px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63420\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-63420 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-25-51.png\" alt=\"create workflow\" width=\"964\" height=\"585\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-25-51.png 964w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-25-51-300x182.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-25-51-768x466.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-25-51-624x379.png 624w\" sizes=\"(max-width: 964px) 100vw, 964px\" \/><p id=\"caption-attachment-63420\" class=\"wp-caption-text\">create workflow<\/p><\/div>\n<ul>\n<li>Next, we need to set up the flow by providing the Microsoft team and Microsoft team channel in which we want to send alerts.<\/li>\n<\/ul>\n<div id=\"attachment_63421\" style=\"width: 984px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63421\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-63421\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-29-15.png\" alt=\"Set up flow\" width=\"974\" height=\"482\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-29-15.png 974w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-29-15-300x148.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-29-15-768x380.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-29-15-624x309.png 624w\" sizes=\"(max-width: 974px) 100vw, 974px\" \/><p id=\"caption-attachment-63421\" class=\"wp-caption-text\">Set up flow<\/p><\/div>\n<ul>\n<li>Finally, click on Create Flow and copy the secret string that will be used by Jenkins for <strong>HTTP POST<\/strong> requests for sending notifications.<\/li>\n<\/ul>\n<div id=\"attachment_63422\" style=\"width: 991px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63422\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-63422\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-30-48.png\" alt=\"create flow\" width=\"981\" height=\"360\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-30-48.png 981w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-30-48-300x110.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-30-48-768x282.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-30-48-624x229.png 624w\" sizes=\"(max-width: 981px) 100vw, 981px\" \/><p id=\"caption-attachment-63422\" class=\"wp-caption-text\">create flow<\/p><\/div>\n<p><strong>Step 2: Set up Jenkins for Sending Alerts<\/strong><\/p>\n<ul>\n<li>Login into <strong>Jenkins<\/strong>. Click on <strong>Manage Jenkins<\/strong> and then <strong>credentials.<br \/>\n<\/strong><\/li>\n<\/ul>\n<div id=\"attachment_63423\" style=\"width: 408px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63423\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-63423 \" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-41-26-278x300.png\" alt=\"Jenkins\" width=\"398\" height=\"429\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-41-26-278x300.png 278w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-41-26-624x672.png 624w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-13-41-26.png 699w\" sizes=\"(max-width: 398px) 100vw, 398px\" \/><p id=\"caption-attachment-63423\" class=\"wp-caption-text\">Jenkins<\/p><\/div>\n<div id=\"attachment_63432\" style=\"width: 993px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63432\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-63432\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-01-05.png\" alt=\"Jenkins Credentials\" width=\"983\" height=\"127\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-01-05.png 983w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-01-05-300x39.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-01-05-768x99.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-01-05-624x81.png 624w\" sizes=\"(max-width: 983px) 100vw, 983px\" \/><p id=\"caption-attachment-63432\" class=\"wp-caption-text\">Jenkins Credentials<\/p><\/div>\n<ul>\n<li>Create credentials. In kind select secret text and enter the copied webhook into the secret. Provide the ID that will be used in Jenkinsfile for sending alerts. Click on Create.<\/li>\n<\/ul>\n<div id=\"attachment_63433\" style=\"width: 1008px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63433\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-63433 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-05-04.png\" alt=\"Jenkins credentials\" width=\"998\" height=\"440\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-05-04.png 998w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-05-04-300x132.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-05-04-768x339.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-05-04-624x275.png 624w\" sizes=\"(max-width: 998px) 100vw, 998px\" \/><p id=\"caption-attachment-63433\" class=\"wp-caption-text\">Jenkins credentials<\/p><\/div>\n<p><strong>Step 3: Set up Jenkins Shared Library.<\/strong><\/p>\n<ul>\n<li>Here we are using Jenkins Shared Library for centralizing notification logic to promote reuse across multiple projects.<\/li>\n<li>It will help us update notification formats and logic in one place, easing the burden on development teams.\n<p><div id=\"attachment_63434\" style=\"width: 676px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63434\" decoding=\"async\" loading=\"lazy\" class=\"wp-image-63434 size-full\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-07-06.png\" alt=\"Jenkins Shared Library\" width=\"666\" height=\"338\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-07-06.png 666w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-07-06-300x152.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-07-06-624x317.png 624w\" sizes=\"(max-width: 666px) 100vw, 666px\" \/><p id=\"caption-attachment-63434\" class=\"wp-caption-text\">Jenkins Shared Library<\/p><\/div><\/li>\n<li>Set up an HTTP POST action for Jenkins notifications to send data to your Teams channel.Use the adaptive card format to create your message.<\/li>\n<li>Contents of jenkinsNotifications.groovy:<\/li>\n<\/ul>\n<pre>def notify(String status, String message, String credentialsId) {\r\n\u00a0 def colors = [\r\n\u00a0 \u00a0 \u00a0 'Success': 'Good', \/\/ green\r\n\u00a0 \u00a0 \u00a0 'Failure': 'Attention' \/\/ red\r\n\u00a0 ]\r\n\r\n\u00a0 if (!colors.containsKey(status)) {\r\n\u00a0 \u00a0 \u00a0 error \"Invalid status: $status\"\r\n\u00a0 }\r\n\r\n\u00a0 def color = colors[status]\r\n\r\n\u00a0 def title = \"Jenkins Build Notification\"\r\n\r\n\u00a0 withCredentials([string(credentialsId: \"${credentialsId}\", variable: 'webhookUrl')]) {\r\n\u00a0 \u00a0 \u00a0 def payload = [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"message\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \"attachments\": [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"contentType\": \"application\/vnd.microsoft.card.adaptive\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"content\": [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"\\$schema\": \"http:\/\/adaptivecards.io\/schemas\/adaptive-card.json\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"AdaptiveCard\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"version\": \"1.3\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"body\": [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"TextBlock\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"size\": \"Medium\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"weight\": \"Bolder\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"text\": \"${title}\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"ColumnSet\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"columns\": [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"Column\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"items\": [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"Image\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"style\": \"Person\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"url\": \"https:\/\/ftp-chi.osuosl.org\/pub\/jenkins\/art\/jenkins-logo\/1024x1024\/logo.png\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"altText\": \"Jenkins\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"size\": \"Medium\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ]\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"width\": \"auto\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"Column\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"items\": [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"TextBlock\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"weight\": \"Bolder\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"text\": \"Jenkins Notification\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"wrap\": true\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ]\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"width\": \"auto\"\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ]\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ]\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"TextBlock\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"weight\": \"Bolder\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"color\": \"${color}\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"text\": \"${status}\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"wrap\": true\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ],\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 [\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"type\": \"TextBlock\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"text\": \"${message}\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"wrap\": true\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ]\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ]\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ]\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ]\r\n\u00a0 \u00a0 \u00a0 \u00a0 ]\r\n\u00a0 \u00a0 \u00a0 ]\r\n\r\n\u00a0 \u00a0 \u00a0 def response = httpRequest(\r\n\u00a0 \u00a0 \u00a0 \u00a0 httpMode: 'POST',\r\n\u00a0 \u00a0 \u00a0 \u00a0 contentType: 'APPLICATION_JSON',\r\n\u00a0 \u00a0 \u00a0 \u00a0 requestBody: groovy.json.JsonOutput.toJson(payload),\r\n\u00a0 \u00a0 \u00a0 \u00a0 url: webhookUrl\r\n\u00a0 \u00a0 \u00a0 )\r\n\r\n\u00a0 \u00a0 \u00a0 echo \"Response: ${response}\"\r\n\u00a0 }\r\n}<\/pre>\n<p><strong>Step 4: Update Jenkins Job Configuration to call Shared Library.<\/strong><\/p>\n<pre>@Library('your-shared-library') _\r\npipeline {\r\n\u00a0 \u00a0 agent any\r\n\u00a0 \u00a0 stages {\r\n\u00a0 \u00a0 \u00a0 \u00a0 stage('Build') {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 steps {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Your build steps here\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 }\r\n\u00a0 \u00a0 post {\r\n\u00a0 \u00a0 \u00a0 \u00a0 success {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 script {\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 def successMessage = \"\"\"\\\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ${appName} application Jenkins Job SUCCESS in ${envName} environment.\\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Jenkins Build URL: ${BUILD_URL}\\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 Jenkins Build Number: ${BUILD_NUMBER}\\n\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \"\"\".stripIndent()\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \/\/ Call the shared library method\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 jenkinsNotifications.notify(\"Success\", successMessage, \"jenkins-test-success\")\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 \u00a0 \u00a0 }\r\n\u00a0 \u00a0 }\r\n}<\/pre>\n<p><strong>Step 5: Test and Validate<\/strong><\/p>\n<ul>\n<li>Run a test job to ensure notifications are sent correctly.<\/li>\n<li>Check the Teams channel to verify that the messages appear as intended.<\/li>\n<\/ul>\n<div id=\"attachment_63435\" style=\"width: 856px\" class=\"wp-caption aligncenter\"><img aria-describedby=\"caption-attachment-63435\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-63435\" src=\"https:\/\/www.tothenew.com\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-15-25.png\" alt=\"Microsoft Teams Alert\" width=\"846\" height=\"468\" srcset=\"\/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-15-25.png 846w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-15-25-300x166.png 300w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-15-25-768x425.png 768w, \/blog\/wp-ttn-blog\/uploads\/2024\/07\/Screenshot-from-2024-07-25-16-15-25-624x345.png 624w\" sizes=\"(max-width: 846px) 100vw, 846px\" \/><p id=\"caption-attachment-63435\" class=\"wp-caption-text\">Microsoft Teams Alert<\/p><\/div>\n<p><strong>Step 6: Iterate Based on Feedback<\/strong><\/p>\n<p>Gather input from your team on the new notification format and make adjustments as necessary to enhance clarity and engagement.<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>Migrating from <strong>O365Connector<\/strong> to<strong> Power Automate Workflows<\/strong> is a strategic move that will keep your Jenkins notifications functional and enhance their effectiveness. By following the outlined steps, teams can ensure a smooth transition, maintaining communication and collaboration in the age of modern DevOps.<\/p>\n<p>At <a href=\"https:\/\/www.tothenew.com\/\">TO THE NEW<\/a>, we are dedicated to helping you navigate this migration and other Jenkins &amp; Microsoft-related work. Our expertise ensures a seamless transition and optimization of your workflows, enhancing your overall DevOps processes\u2014partner with us for a streamlined and efficient journey in adopting the latest tools and technologies.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction As Microsoft Teams evolves, so do its features and functionalities. Recently, Microsoft announced the deprecation of O365 connectors within Teams, encouraging users to migrate to the more flexible and secure Workflows app. If you rely on O365 connectors for notifications and integrations, this blog will help you transition smoothly to using Workflows. This guide [&hellip;]<\/p>\n","protected":false},"author":1601,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":480},"categories":[2348],"tags":[1853,6182,6177,6178,5792,6179,6176,6181,6175,6180,2076],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/63093"}],"collection":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/users\/1601"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/comments?post=63093"}],"version-history":[{"count":8,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/63093\/revisions"}],"predecessor-version":[{"id":63506,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/posts\/63093\/revisions\/63506"}],"wp:attachment":[{"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/media?parent=63093"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/categories?post=63093"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tothenew.com\/blog\/wp-json\/wp\/v2\/tags?post=63093"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}