biztalk server
39 TopicsLogic Apps Aviators Newsletter - June 25
In this issue: Ace Aviator of the Month News from our product group News from our community Ace Aviator of the Month April’s Ace Aviator: Andrew Wilson What's your role and title? What are your responsibilities? I am the Chief Consultancy Officer at Black Marble, a multi-award-winning software company with a big focus on the Microsoft stack. I work with a talented team of consultants to help our customers get the most out of Azure. My role is all about enabling organisations to modernise, integrate, and optimise their systems, always with an eye on DevOps best practices. I’m involved across most of the software development lifecycle, but my focus tends to lean toward consultations, gathering requirements, and architecting solutions that solve real-world problems. I work across a range of areas including application modernisation, BizTalk to Azure Integration Services (AIS) migrations, system integrations, and cloud optimisation. Over time, I've developed a strong focus on Azure, especially around AIS. In short, I help bridge the gap between technical possibilities and business needs, making sure the solutions we design are both practical and future-ready. Can you give us some insights into your day-to-day activities and what a typical day in your role looks like? No two days are quite the same which keeps things interesting! I usually kick things off with a quick plan for the day (and a bit of reshuffling for the week ahead) to make sure we’re focused on what matters most for both customers and the team. My time is a mix of customer-facing work, sales conversations with new prospects, and supporting existing clients, whether that’s through solution design, quick fixes, or hands-on consultancy. I’m often reviewing or writing proposals and architectures, and jumping in to support the team on delivery when needed. There’s always some active learning in the mix too, reading, experimenting, or spinning up quick ideas to explore better ways of doing things. We don’t work in silos at Black Marble, so I’ll often jump in where I can add value, whether or not I’m directly on the project. It’s a real team effort, and that collaboration is a big part of what makes the role so rewarding. What motivates and inspires you to be an active member of the Aviators/Microsoft community? I’ve always enjoyed the challenge of bringing systems and applications together, there’s something really satisfying about seeing everything click into place and knowing it’s driving real business value What makes the Aviators and wider Microsoft community special is that everyone shares that same excitement. It’s a group of people who genuinely care about solving problems, pushing technology forward, and learning from one another. Being part of that kind of community is motivating in itself, we’re all collaborating, sharing ideas, and helping shape a better, more connected future. It’s hard not to be inspired when you’re surrounded by people who are just as passionate about the work as you are. Looking back, what advice do you wish you had been given earlier that you'd now share with those looking to get into STEM/technology? Stay curious, always ask “why,” and don’t be afraid to get things wrong, because you will, and that’s how you learn. Some of the best breakthroughs come after a few missteps (and maybe a bit of head-scratching). It’s easy to look around and feel like others have it all figured out, don’t let that discourage you. Everyone’s journey is different, and what looks effortless on the outside often has a lot of trial and error behind it. One of the best things about STEM is its diversity, there are so many different roles, paths, and people in this space. Whether you’re hands-on with code, designing systems, or solving data challenges, there’s a place for you. It’s not a one-size-fits-all, and that’s what makes it exciting. Most importantly, share what you learn. Even if something’s been “done,” your take on it might be exactly what someone else needs to see to help them get started. And yes, imposter syndrome is real, but don’t let it silence you. You belong here just as much as anyone else. What has helped you grow professionally? A big part of my growth has come from simply committing to continuous learning, whether that’s diving into new tech, attending conferences like Integrate, or being part of user groups where ideas (and challenges) get shared openly. I’ve also learned to say yes to opportunities, even when they’ve felt a bit daunting at first. Pushing through the unknown, especially with the support of a great team and community, has led to some of my most rewarding experiences. And finally, I try to approach everything with the mindset that I’m someone others can count on. That sense of responsibility has helped me stay focused, accountable, and constantly improving. If you had a magic wand that could create a feature in Logic Apps, what would it be and why? Wow, what an exciting question! If I had a magic wand, the first thing I’d add is having the option to throw exceptions that can be caught by try-catch scope blocks, this would bring much-needed clarity and flexibility to error handling. It’s a feature that would really help build more resilient and maintainable solutions. Then, the ability to break or continue loops, sometimes you need that fine-tuned control to keep your workflows running smoothly without extra workarounds. And lastly, full GA support for unit and integration testing, because testing is the backbone of reliable software, and having that baked in would save so much time and stress down the line. News from our product group Logic Apps Live May 2025 Missed Logic Apps Live in May? You can watch it here. We focused on the Logic Apps big announcements from Microsoft Build 2025. There are a lot of great things to check! Announcing agent loop: Build AI Agents in Azure Logic Apps The era of intelligent business processes has arrived! Today, we are excited to announce agent loop, a groundbreaking new capability in Azure Logic Apps to build AI agents into your enterprise workflows. With agent loop, you can embed advanced AI decision-making directly into your processes – enabling your apps and automation to not just follow predefined steps, but to reason, adapt, and act autonomously towards goals. Agent Loop Demos We announced the public preview of agent loop at Build 2025. Agent Loop is a new feature in Logic Apps to build AI Agents for use cases that span across industry domains and patterns. In this article, share with you use cases implemented in Logic Apps using agent loop and other features. Announcement: Azure Logic Apps Document Indexer in Azure Cosmos DB We’re excited to announce the public preview of Azure Logic Apps as a document indexer for Azure Cosmos DB!00 With this release, you can now use Logic Apps connectors and templates to ingest documents directly into Cosmos DB’s vector store—powering AI workloads like Retrieval-Augmented Generation (RAG) with ease. Announcement: Logic Apps connectors in Azure AI Search for Integrated Vectorization We’re excited to announce that Azure Logic Apps connectors are now supported within AI Search as data sources for ingestion into Azure AI Search vector stores. This unlocks the ability to ingest unstructured documents from a variety of systems—including SharePoint, Amazon S3, Dropbox and many more —into your vector index using a low-code experience. Announcement: Power your Agents in Azure AI Foundry Agent Service with Azure Logic Apps We’re excited to announce the Public Preview of two major integrations that bring the power of Azure Logic Apps to AI Agents in Foundry – Logic Apps as Tools and AI Agent Service Connector. Learn more on our announcement post! Codeful Workflows: A New Authoring Model for Logic Apps Standard Codeful Workflows expand the authoring and execution models of a Logic Apps Standard, offering developers the ability to implement, test and run workflows using an imperative programming model both locally and in the cloud. Announcing the General Availability of the Azure Logic Apps Rules Engine we are announcing the General Availability of our Azure Logic Apps Rules Engine. A deterministic rules engine runtime based on the RETE algorithm that allows in-memory execution, prioritization, and reevaluation of business rules in Azure Logic Apps. Integration Environment Update – Unified experience to create and manage alerts We’re excited to announce the next milestone in our journey to simplify monitoring across Azure Integration Services. As a follow-up to our earlier preview release on unified monitoring and dashboards, we’re now making it easier than ever to configure alerts for your integration applications. Automate Invoice data extraction with Logic Apps and Document Intelligence This blog post demonstrates how you can use Azure Logic Apps, the new Analyze Document Details action, and Azure OpenAI to automatically convert invoice images into structured data and store them in Azure Cosmos DB. Log Ingestion to Azure Log Analytics Workspace with Logic App Standard Discover how to send logs to Azure Log Analytics Workspace using Logic App Standard for VNet integration. Learn about shared key authentication and HTTP action configuration for seamless log ingestion. Generating Webhook Action Callback URL with Primary or secondary Access Key Learn how to manage Webhook action callback URLs in Azure Logic Apps when regenerating access keys. Discover how to use the accessKeyType property to ensure seamless workflow execution and maintain security. Announcing the Public Preview of the Applications feature in Azure API management Discover the new Applications feature in Azure API Management, enabling OAuth-based access to APIs and products. Streamline secure API access with built-in OAuth 2.0 application-based authorization. GA: Inbound private endpoint for Standard v2 tier of Azure API Management Today, we are excited to announce the general availability of inbound private endpoint for Azure API management Standard v2 tier. Securely connect clients in your private network to the API Management gateway using Azure Private Link. Announcing the open Public Preview of the Premium v2 tier of Azure API Management Announcing the public preview of Azure API Management Premium v2 tier. Experience superior capacity, highest entity limits, and unlimited calls with enhanced security and networking flexibility. Announcing Federated Logging in Azure API Management Announcing federated logging in Azure API Management. Gain centralized monitoring for platform teams and autonomy for API teams, streamlining API management with robust security and operational visibility. Introducing Workspace Gateway Metrics and Autoscale in Azure API Management Introducing workspace gateway metrics and autoscale in Azure API Management. Efficiently monitor and scale your gateway infrastructure with real-time insights and automated scaling for enhanced reliability and cost efficiency. Introducing Model Logging, Import from AI Foundry, and extended model support in AI Gateway Introducing workspace gateway metrics and autoscale in Azure API Management. Efficiently monitor and scale your gateway infrastructure with real-time insights and automated scaling for enhanced reliability and cost efficiency. Expose REST APIs as MCP servers with Azure API Management and API Center (now in preview) Discover how to expose REST APIs as MCP servers with Azure API Management and API Center, now in preview. Enhance AI integration with secure, observable, and scalable API operations. Now in Public Preview: System events for data-plane in API Management gateway Announcing the public preview of new data-plane system events in Azure Event Grid for the Azure API Management managed gateway. Gain near-real-time visibility into critical operations, automate responses, and prevent disruptions. News from our community Agentic AI – A Potential Black Swan Moment in System Integration Video by Ahmed Bayoumy Discover how Agentic Logic Apps are revolutionizing system integration with AI-driven workflows. Learn how this innovative approach transforms business processes by understanding goals, deciding actions, and using predefined tools for smart orchestration. Microsoft Build: Behind the Scenes with Agent Loop Workflow A New Phase in AI Evolution Video by Ahmed Bayoumy Explore how Agent Loop brings “human in the loop” control to enterprise workflows, on this video by Ahmed, sharing insights directly from Microsoft Build 2025, in a chat with Kent Weare and Divya Swarnkar. Microsoft Build 2025: Azure Logic Apps is Now Your AI Agent Superpower! Post by Sagar Sharma Discover how Azure Logic Apps is transforming AI agent development with new capabilities unveiled at Microsoft Build 2025. Learn about Agent Loop, AI Foundry integration, Document Indexer, and more for intelligent, adaptive workflows. Everyone is talking about AI Agents — Here’s how to actually build one that works Post by Mateusz Partyka Learn how to build effective AI agents with practical strategies and insights. Discover tips on choosing the right tech stack, prototyping fast, managing model costs, and prompt engineering for optimal results. Agent Loop | Azure Logic Apps Just Got Smarter Post by Andrew Wilson Discover Agent Loop in Azure Logic Apps – now in preview - a revolutionary AI-powered integration feature. Enhance workflows with advanced decision-making, context retention, and adaptive actions for smarter automation. Step-by-Step Guide to Azure Logic Apps Agent Loop Post by Stephen W. Thomas Dive into the step-by-step guide for creating AI Agents with Azure Logic Apps Agent Loop – now in preview. Learn to leverage 1300+ connectors, set up OpenAI models, and build intelligent workflows with no-code integration. You can also follow Stephen’s video tutorial Confessions of a Control Freak: How I Learned to Love Low Code (with Logic Apps) Post by Peter Mugisha Discover how a self-confessed control freak learned to embrace low-code development with Azure Logic Apps. From skepticism to advocacy, explore the journey of efficient integration and streamlined workflows. Logic Apps Standard vs. Large Files: Common Hurdles and How to Beat Them Post by Şahin Özdemir Learn how to overcome common hurdles when handling large files in Logic Apps Standard. Discover strategies for scaling, offloading memory-intensive operations, and optimizing performance for efficient integration. There is a new-new Data Mapper for Logic App Standard Post by Sandro Pereira Discover the new Data Mapper for Logic App Standard, now in public preview. Enjoy a modern BizTalk-style mapper with code-first, schema-aware experience, supporting XSLT 3.0, XSD, and JSON schemas for efficient data mapping! A Friday Fact from Sandro Pereira. The name of When a HTTP request is received trigger affects the workflow URL Post by Sandro Pereira Discover how the name of the "When a HTTP request is received" trigger affects the workflow URL in Azure Logic Apps. Learn best practices to avoid integration issues and ensure consistent endpoint paths. Changing APIM Operations Doesn’t Update their PathTemplate Post by Luis Rigueira Learn how to handle PathTemplate issues in Azure Logic Apps Standard when switching APIM operations. Ensure correct endpoint paths to avoid misleading results and streamline your workflow. It is a Friday Fact, brought to you by Luis Rigueira!260Views0likes0Comments🧩 Use Index + Direct Access to pull data across loops in Data Mapper
When working with repeating structures in Logic Apps Data Mapper, you may run into situations where two sibling loops exist under the same parent. What if you need to access data from one loop while you’re inside the other? This is where the Direct Access function, used in combination with Index, can save the day. 🧪 Scenario In this pattern, we’re focusing on the schema nodes shown below: 📸 Source & Destination Schemas (with loops highlighted) In the source schema: Under the parent node VehicleTrips, we have two sibling arrays: Vehicle → contains VehicleRegistration Trips → contains trip-specific values like VehicleID, Distance, and Duration In the destination schema: We're mapping into the repeating node Looping/Trips/Trip It expects each trip’s data along with a flattened VehicleRegistration value that combines both: The current trip’s VehicleID The corresponding vehicle’s VehicleRegistration The challenge? These two pieces of data live in two separate sibling arrays. 🧰 Try it yourself 📎 Download the sample files from GitHub Place them into the following folders in your Logic Apps Standard project: Artifacts → Source, destination and dependency schemas (.xsd) Map Definitions → .lml map file Maps → The .xslt file generated when you save the map Then right-click the .lml file and select “Open with Data Mapper” in VS Code. 🛠️ Step-by-step Breakdown ✅ Step 1: Set up the loop over Trips Start by mapping the repeating Trips array from the source to the destination's Trip node. Within the loop, we map: Distance Duration These are passed through To String functions before mapping, as the destination schema expects them as string values. As you map the child nodes, you will notice a loop automatically added on parent nodes (Trips->Trip) 📸 Mapping Distance and Duration nodes (context: we’re inside Trips loop) 🔍 Step 2: Use Index and Direct Access to bring in sibling loop values Now we want to map the VehicleRegistration node at the destination by combining two values: VehicleID (from the current trip) VehicleRegistration (from the corresponding vehicle) ➡️ Note: Before we add the Index function, delete the auto-generated loop from Trips to Trip To fetch the matching VehicleRegistration: Use the Index function to capture the current position within the Trips loop 📸 Index setup for loop tracking Use the Direct Access function to retrieve VehicleRegistration from the Vehicle array. 📘 Direct Access input breakdown The Direct Access function takes three inputs: Index – from the Index function, tells which item to access Scope – set to Vehicle, the array you're pulling from Target Node – VehicleRegistration, the value you want This setup means: “From the Vehicle array, get the VehicleRegistration at the same index as the current trip.” 📸 Direct Access setup 🔧 Step 3: Concatenate and map the result Use the Concat function to combine: VehicleID (from Trips) VehicleRegistration (from Vehicle, via Direct Access) Map the result to VehicleRegistration in the destination. 📸 Concat result to VehicleRegistration ➡️ Note: Before testing, delete the auto-generated loop from Vehicle to Trip 📸 Final map connections view ✅ Step 4: Test the output Once your map is saved, open the Test panel and paste a sample payload. You should see each Trip in the output contain: The original Distance and Duration values (as strings) A VehicleRegistration field combining the correct VehicleID and VehicleRegistration from the sibling array 📸 Sample Trip showing the combined nodes 💬 Feedback or ideas? Have feedback or want to share a mapping challenge? Open an issue on GitHubSumming it up: Aggregating repeating nodes in Logic Apps Data Mapper 🧮
Logic Apps Data Mapper makes it easy to define visual, code-free transformations across structured JSON data. One pattern that's both powerful and clean: using built-in collection functions to compute summary values from arrays. This post walks through an end-to-end example: calculating a total from a list of items using just two functions — `Multiply` and `Sum`. 🧾 Scenario: Line Item Totals + Order Summary You’re working with a list of order items. For each item, you want to: Compute Total = Quantity × Price Then, compute the overall OrderTotal by summing all the individual totals 📥 Input { "orders" : [ { "Quantity" : 10, "Price" : 100 }, { "Quantity" : 20, "Price" : 200 }, { "Quantity" : 30, "Price" : 300 } ] } 📤 Output { "orders" : [ { "Quantity" : 10, "Price" : 100, "Total" : 1000 }, { "Quantity" : 20, "Price" : 200, "Total" : 4000 }, { "Quantity" : 30, "Price" : 300, "Total" : 9000 } ], "Summary": { "OrderTotal": 14000 } } 🔧 Step-by-step walkthrough 🗂️ 1. Load schemas in Data Mapper Start in the Azure Data Mapper interface and load: Source schema: contains the orders array with Quantity and Price Target schema: includes a repeating orders node and a Summary → OrderTotal field 📸 Docked schemas in the mapper 🔁 2. Recognize the repeating node The orders array shows a 🔁 icon on <ArrayItem>, marking it as a repeating node. 📸 Repeating node detection 💡 When you connect child fields like Quantity or Price, the mapper auto-applies a loop for you. No manual loop configuration needed. ➗ 3. Multiply Quantity × Price (per item) Drag in a Multiply function and connect: Input 1: Quantity Input 2: Price Now connect the output of Multiply directly to the Total node under Orders node in the destination. This runs once per order item and produces individual totals: [1000, 4000, 9000] 📸 Multiply setup ➕ 4. Aggregate All Totals Using Sum Use the same Multiply function output and pass it into a Sum function. This will combine all the individual totals into one value. Drag and connect: Input 1: multiply(Quantity, Price) Input 2: <ArrayItem> Connect the output of Sum to the destination node Summary → OrderTotal 1000 + 4000 + 9000 = 14000 📸 Sum function ✅ 5. Test the Output Run a test with your sample input by clicking on the Open test panel. Copy/paste the sample data and hit Test. The result should look like this: { "orders": [ { "Quantity": 10, "Price": 100, "Total": 1000 }, { "Quantity": 20, "Price": 200, "Total": 4000 }, { "Quantity": 30, "Price": 300, "Total": 9000 } ], "Summary": { "OrderTotal": 14000 } } 🧠 Why this pattern works 🔁 Repeating to repeating: You’re calculating Total per order 🔂 Repeating to non-repeating: You’re aggregating with Sum into a single node 🧩 No expressions needed — it’s all declarative This structure is perfect for invoices, order summaries, or reporting payloads where both detail and summary values are needed. 📘 What's coming We’re working on official docs to cover: All functions including collection (Join, Direct Access, Filter, etc.) that work on repeating nodes Behavior of functions inside loops Real-world examples like this one 💬 What should we cover next? We’re always looking to surface patterns that matter most to how you build. If there’s a transformation technique, edge case, or integration scenario you’d like to see explored next — drop a comment below and let us know. We’re listening. 🧡 Special thanks to Dave Phelps for collaborating on this scenario and helping shape the walkthrough.An Automated Tool for Collecting PSSDiag BizTalk Traces Using Event Logs
Often, users encounter intermittent event log errors from BizTalk that require further investigation using a BizTalk PSSDiag trace. However, since the timing of the next occurrence is unpredictable, troubleshooting becomes challenging. In such scenarios, a tool is needed to continuously collect PSSDiag traces until the error reoccurs, at which point the tool can automatically stop tracing and save the output. To address this need, I’ve developed a tool that automates this process based on user requirements. PSSDiag for BizTalk is a specialized diagnostic data collection tool tailored for troubleshooting BizTalk Server environments. Built as an extension of PSSDiag (Product Support Services Diagnostics), a widely used tool for diagnosing Microsoft SQL Server issues, it collects a comprehensive set of logs and diagnostic data specific to BizTalk. This includes information crucial for identifying and resolving performance, connectivity, or configuration issues. The tool runs from a console interface, and data collection can be stopped manually by pressing Ctrl+C. I have developed a console application PSSDiagCollector that launches PSSDiag to monitor the event log and automatically stops the PSSDiag collection once a specific event is detected. You can download the tool from this GitHub repository: https://github.com/huidongl/PSSDiagCollector The PSSDiagCollector.exe must be saved in the same folder as PSSDiagForBizTalk. Users can open a command prompt, navigate to the PSSDiagForBizTalk directory, and run PSSDiagCollector from there. The command can specify the Event ID, Event Source, or Event Type to capture, as well as the number of events required to stop the collection. Additionally, users can set a delay (in seconds) before stopping the trace. Detailed instructions for using the tool to collect PSSDiag BizTalk traces can be found in the repository. Run the following command to begin the collection: PSSDiagCollector.exe -eid <EventID> -c <EventCount> -p <PauseDuration> -es "<EventSource>" -lc "<LogCategory>" For example: PSSDiagCollector.exe -eid 7195 -c 3 -p 30 -es "BizTalk Server" -lc "Application" Please make sure to configure the Trace Type, Keep the last _ trace files in the Initialize.exe before running this tool to avoid the trace file being filled up.217Views2likes0Comments