On 12th May, during my session in the Integrate 2016 event about “A new set of BizTalk Server Tips and Tricks” (you can watch the full session online here) I announce that I had BizTalk Server 2016 stickers to offer (it was a way to buy the audience hehehe).

sticker-buying-votes

I always felt a little “jealousy”, maybe not the best word to describe, probably: “sad”, “eager to have or find”, some kind of merchandise related to the technology “I love”: BizTalk Server:

  • a bag, a shirt, jacket or a simple sticker

Most of the times just to annoy/upset my fellow coworkers or MVPs Smile. Although they exist, I have a BizTalk Server 2002 jacket, they are very rare to find, believe me!

And in an epoch or popular trend that what you will find more is stickers to put in your laptop from Azure, Gulp, Visual Studio and more recently Microsoft Flow, PowerApps, Hololens, API and many more stickers… you will not find any BizTalk Server stickers!

So, in the absence of official Microsoft sticker I decide to put my hands in the mud and create them.

I did not expect, but the result for me was a big success and the attendees and speakers seem to have enjoy them:

sticker-giveawaysticker-thanks-01sticker-thanks-02

I had several requested after my session but unfortunately I only took close to 100 stickers for an event with more than 300 attendees…

sticker-request

And some of them arrived to Australia after the event!

sticker-in-australia

But now I finally got a free time to publish them and you are now able to download  and print them:

There are the “dear”/”sweet” T-Rex version:~

stickers-sandro-pereira-01

And the infamous badass T-Rex version:

stickers-sandro-pereira-02

They are in the perfect size/resolution, you just need to download the zip file and send it to a graphic shop!

Hope you enjoy!

You can download BizTalk Server 2016 Stickers from:

BizTalk Server 2016 Stickers (7,3 Kb)
Microsoft | TechNet Gallery

Because yesterday Portugal was European Champion I decide today to give a gift to the community by making an earlier release of my Microsoft Integration Stencils Pack.

After the major release in June 16, I started to realize that with so many stencils it was becoming a little hard to find, or rather, I was spending too much time to find some representations that I wanted to use in my diagrams. Don’t get me wrong, I will continue to add new stencils and I already did in this release, however, the major improvement that I’m trying to make is to divide the Stencils in different files for a better organization.

With these new additions, this package now contains an astounding total of ~831 (~100 additions) (symbols/icons) that will help you visually represent Integration architectures (On-premise, Cloud or Hybrid scenarios) and solutions diagrams in Visio 2016/2013. It will provide symbols/icons to visually represent features, systems, processes and architectures that use BizTalk Server, Microsoft Azure and related technologies.

  • BizTalk Server
  • Microsoft Azure
    • BizTalk Services
    • Azure App Service (API Apps, Web Apps, Mobile Apps, PowerApps and Logic Apps)
    • Microsoft Flow
    • Event Hubs
    • Service Bus
    • API Management, IoT and Docker
    • Machine Learning, Stream Analytics, Data Factory, Data Pipelines
    • and so on
  • PowerBI
  • PowerShell
  • And many more…

Divided in 8 files to be easier to maintain and find the right shapes:

  • Microsoft Integration Stencils v2.0 (420 shapes)
  • MIS Apps and Systems Logo Stencils (69 shapes)
  • MIS IoT Devices Stencils (123 shapes)
  • MIS Support Stencils (101 shapes)
  • MIS Servers and Hardware v2.1 (39 shapes)
  • MIS Originals v2.1 (22 shapes)
  • MIS Users (27 shapes)
  • MIS Devices v2.1 (30 shapes)

Some of the new additions:

MIS-Stencils-v2.1-last-additions

You can download Microsoft Integration Stencils Pack for Visio 2016/2013 from:

Microsoft Integration Stencils Pack for Visio 2016/2013 (7,1 MB)
Microsoft | TechNet Gallery

A goal from Eder, at the 109 minutes of the match, it was worth the European champion title to Portugal, an unprecedented title in Portuguese football, succeeding our neighbor Spain.

PORTUGAL are the Euro 2016 champions. No matter what anyone says or does, that will not change.

Portugal-Euro-2016-champion

(photo from: UEFA)

No matter now saying that we all (the Portuguese people) believed. It is easy to speak when things are over and we all know the end result but the reality is that even though we all have believed in the beginning, during the group phase we all doubt and at some point we all throw the towel to the floor… except on man who had the task to lead the group and encourage a handful of great players: coach Fernando Santos!

He said after the null against Austria (second match): "I only return to Portugal on 11th and I will be received in party" –he was criticized/joked by everyone. I was one of these unbelieving that believed that the only way for that to happens was if he was staying on holiday in France to see the other games.

Sorry for doubting you mister Fernando Santos… But we start to believe after we beat Croatia in the Round of 16… and you all know the rest of the story… we were unstoppable, tremendous efficiency, and despite a lot of criticism about him, I never saw Ronaldo playing so well for is team and he was there when we need him.

We are champions and the feeling is tremendously good, these is a people that deserved this for many years!

But… I this – Portugal been European Champion will affect the Integrate2017 in London, even without Saravana Kumar knowing yet?

Well, if you already attended to a BizTalk/Integrate event in London, you probably realized that sometimes we (the speakers) like to play tricks to each other… it happened in 2014 with Johan using a Canadian Hockey jersey (lost a bet against Kent), this year the revenge with a picture of Ken using a Sweden Hockey Jersey. And for that reason, I’m happy to public announce, again even without Saravana Kumar knowing, we already have two confirmed speakers for Integrate2017:

  • Steef-Jan Wiggers (wearing Pepe number 3 Portugal green jersey)
  • and Mikael Hakansson (wearing Cristiano Ronaldo number 7 Portugal jersey)!

How did that happen?
Well let’s say that Portugal wasn’t the favorite team within our MVP’s Integration WhatsApp group (Spain, Germany or Belgium were there favorites teams) with the exception of Kent Weare that supported Portugal from day 1… So after Croatia, even without knowing the result of Wales and Belgium and thinking that we would play against Belgium, I bet with Steef-Jan Wiggers (at that time a Belgium supporter J) that Portugal will reach the final!

Lost-bet-Steef

Why Pepe? Because he is a Barcelona fan and doesn’t like Pepe too much Smile.

In the final, I had 99% support of all MVP’s with the exception of Mikael – the only one supporting French – and I had bet with him, he gave power to Johan Hedberg to accept all the deals while he was in vacations, that if Portugal won the tournament he would have to wear the jersey your pet’s enemy: CR7 (also a Barcelona fan). He is now trying to find reasons to get away and not fulfill the bet Smile.

In both cases if I had lost I would have worn the jersey of Barcelona – Messi (although good player is by far one of my favorite players) or use the Spain jersey in my session in London… ufff I’m safe from that but I always believed!

Congratulations Portugal!

Finally, I found some extra minutes to be able to write and after spending all my available free time over the last few weeks, mainly in researching but also in creating several ones… I’m happy to say that a major version, 360 new shapes – that is the double of the previous version, of Microsoft Integration Stencils Pack for Visio 2016/2013 is now available for you to download.

With these new additions, this package now contains an astounding total of 721 shapes (symbols/icons) that will help you visually represent Integration architectures (On-premise, Cloud or Hybrid scenarios) and solutions diagrams in Visio 2016/2013. It will provide symbols/icons to visually represent features, systems, processes and architectures that use BizTalk Server, Microsoft Azure and related technologies.

  • BizTalk Server
  • Microsoft Azure
    • BizTalk Services
    • Azure App Service (API Apps, Web Apps, Mobile Apps, PowerApps and Logic Apps)
    • Microsoft Flow
    • Event Hubs
    • Service Bus
    • API Management, IoT and Docker
    • Machine Learning, Stream Analytics, Data Factory, Data Pipelines
    • and so on
  • PowerBI
  • PowerShell
  • And many more…

With so many new shapes, I decide to divide the package in 4 files to be easier to maintain and find the right shapes:

  • Microsoft Integration Stencils v2.0 (416 shapes)
  • MIS Apps and Systems Logo Stencils (60 shapes)
  • MIS IoT Devices Stencils (123 shapes)
  • MIS Support Stencils (122 shapes)
BizTalk Server

Requested by several community member I added two special shapes:

  • The infamous T-Rex
  • and “The Chicken Way”

MIS-Stencils-Pack-BizTalk-Server

BizTalk Services

MIS-Stencils-Pack-BizTalk-Services

Azure App Service, Microsoft Flow and API Management

MIS-Stencils-Pack-App-Services

Azure

MIS-Stencils-Pack-Azure

Infrastructure

MIS-Stencils-Pack-Infraestructure

PowerBI, PowerShell and Service Fabric

MIS-Stencils-Pack-PowerBI

IoT

MIS-Stencils-Pack-IoT

and many more:

MIS-Stencils-Pack-More

That you can use and resize without losing quality.

Again, I didn’t create all of this shapes, maybe half of them, the other half was the work of gathering all the available resources and combine them together, for example, if you’re looking for more or official Azure Visio stencils, then you can find them here: Microsoft Azure, Cloud and Enterprise Symbol / Icon Set – Visio stencil, PowerPoint, PNG.

There are still many points that could be improved as well as adding new stencils but I hope you like the final result.

You can download Microsoft Integration Stencils Pack for Visio 2016/2013 from:

Microsoft Integration Stencils Pack for Visio 2016/2013 (6,4 MB)
Microsoft | TechNet Gallery

Bigger and better this is what to expect in this fourth conference that will take place in London. I think we can say with great certainty that this will be the biggest integration conference in the world that will happen this year! (of course related to Microsoft technologies, I don’t want to compare with other integration technologies)

Integration-2016-banner

This will be a three-day event purely focused to the Microsoft Integration stack, so we invite you all to join us in London, England. The event will take place at ExCeL London Exhibition Center and once again is being organized by BizTalk360 in conjunction with Microsoft. Please visit this link for more detail about the event and for registration information.

We will have:

  • This is not anymore a BizTalk related event this is now an Integration event covering a broad set of technologies that will appeal to integration focused professionals:
    • BizTalk Server and its expected new release BizTalk Server 2016
    • Azure App Service – API Apps and Logic Apps – PowerApps and Microsoft flows
    • Azure Service Bus (Event Hubs and Messaging)
    • And other topics like Internet of Things (IoT), Azure API Management, Azure Stream Analytics and Power BI or even Open Source technologies
  • 27 speakers (16 Integration MVP and 11 Microsoft program managers) and 27 sessions
    • The first half of the sessions and speakers are represented by Microsoft product group and the second half from Microsoft Integration MVP’s
  • There will be a paid Live Stream option for those who are not able to attend locally to this event see more about this option here.

This will also be an amazing opportunity to Network, Connect, and Reconnect with Colleagues. Meet some of the people you have been following on Twitter and blogs and network with them and others who are interested in the same things you are. To hang out with the smartest people you know – and I’m not talking about the speakers or Microsoft! I’m talking about you guys! – last reports mention that more than 370 attendees from over 150 companies across 25+ countries are going to attend the event, so imagine the experience that all of us have combined!

So my advice is: Don’t be afraid or shy, don’t wait for people come to you, instead, take your chances, engage the people you want to meet by easily saying "Hi my name is… ". This experience can be a great morale booster for you, lifelong friendships and connections have evolved from such conferences – I’m speaking for personal experience!

Integration-2016-engage-networking

And me to facilitate this approach or initiative to engage people – I will take near to 50 BizTalk cool gifts to distribute among the attendees that probably will ask questions in my session or who engage me during the event to have a simple conversation – doesn’t need to be about BizTalk or technologies it can be a simple introduction or normal conversation Smile.

Integration-2016-gifts

I’m also thrilled to be once again (fourth time) a speaker in this amazing event that I help to construct among with the other BizTalkCrew members (Nino Crudele, Steej-Jan Wiggers, Tord G. Nordahl and Saravana Kumar).

Integration-2016-im-speaking

I liked my session last year and the feedback that I received and based on the time that I have to present (30 min session) I decided that my topic would be one again about tips and tricks for developers and admins: “A new set of BizTalk Server Tips and Tricks”

Session Abstract

It’s critical to use good tools and techniques to maintain, support and produce new working solutions as quickly as possible. In this session, Sandro will introduce you to a new set of useful BizTalk Server Tips and Tricks, acquired by years of experience in the field.

The session will cover the expectations for all the roles: architects, managers, developers, and administrators. Topics include BizTalk migration strategy, content-based routing techniques, Mapping, BizTalk administration tips, extending BizTalk out-of-the-box capabilities and many more.

Integration-2016-sandro-session

I hope that, like me, you find it an interesting topic! See you there!

And remember, this annual conference has become a must-attend event for those interested in integration, so check more details about this event here.

Exciting news… Version 1.9.0.0 of BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 R2 and 2013 is now available!

Here’s the change-log for this release:

  • Ten new functoids:
    • Advance Logical AND Functoid
    • Advance Equal Functoid
    • Advance Greater Than Functoid
    • Advance Greater Than or Equal To Functoid
    • Advance Less Than Functoid
    • Advance Less Than or Equal To Functoid
    • Advance Not Equal Functoid
    • Advance Logical NOT Functoid
    • Advance Logical OR Functoid
    • If-Then-Else Functoid
  • Updates on the deployment scripts
What’s new in this version?

Although BizTalk Server provides many functoids to support a range of diverse operations when working with conditional mapping, we are limited to the number of existing operations or otherwise have to use custom XSLT.

This new library – Logical Functoids – includes a suit of functoids to perform a variety of logical operations, often controlling whether a particular element or attribute is created in an output instance message. Most of the Logical Functoids are a replica of the existent Logical Functoids that came out-of-the-box with BizTalk Server with the advantage that these will allow you to connect with others Custom String Functoids. They are fully compatible with existing functoids and don’t produce any more additional code.

biztalk-mapper-extensions-utilitypack-2013-r2-v1-9

See also the reason I decide to create this library here: Why is so hard to make a simple If-Then-Else Functoid? … well, not anymore!

Advance Logical AND Functoid

Use the Advance Logical AND functoid to return the logical AND of input parameters. It determines whether all of the specified input parameters are true.

Parameters

This functoid requires a minimum of two input parameters and a maximum of one hundred:

  • Parameter 1: A value that can be evaluated as either True or False.
  • Parameters 2 – 100: Values that can be evaluated as either True or False.

Returns the logical AND of parameters. True if all of the specified input parameters evaluate to True; False otherwise.

01-Advance-Logical-AND-Functoid

Advance Equal Functoid

Use the Advance Equal functoid to return the value “true” if the first input parameter is equal to the second input parameter. It tests whether the two input parameters are equal.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested for equality with the parameter 2.
  • Parameter 2: A value to be tested for equality with the parameter 1.

Returns “True” if the values of the two input parameters are equal; “False” otherwise.

02-Advance-Equal-Functoid

Advance Greater Than Functoid

Use the Advance Greater Than functoid to return the value “true” if the first input parameter is greater than the second input parameter. It tests whether the first input parameter is greater than the second input parameter.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested to determine whether it is greater than parameter 2.
  • Parameter 2: A value to be tested to determine whether it is greater than parameter 1.

Returns “True” if the value of the first input parameter is greater than the value of the second input parameter; “False” otherwise.

03-Advance-Greater-Than-Functoid

Advance Greater Than or Equal To Functoid

Use the Advance Greater Than or Equal To functoid to return the value “true” if the first input parameter is greater than or equal to the second input parameter. It tests whether the first input parameter is greater than or equal to the second input parameter.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested to determine whether it is greater than or equal to parameter 2.
  • Parameter 2: A value to be tested to determine whether it is greater than or equal to parameter 1.

Returns “True” if the value of the first input parameter is greater than or equal to the value of the second input parameter; “False” otherwise.

04-Advance-Greater-Than-or-Equal-To-Functoid

Advance Less Than Functoid

Use the Advance Less Than functoid to return the value “true” if the first input parameter is less than the second input parameter. It tests whether the first input parameter is less than the second input parameter.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested to determine whether it is less than parameter 2.
  • Parameter 2: A value to be tested to determine whether it is less than parameter 1.

Returns “True” if the value of the first input parameter is less than the value of the second input parameter; “False” otherwise.

05-Advance-Less-Than-Functoid

Advance Less Than or Equal To Functoid

Use the Advance Less Than or Equal To functoid to return the value “true” if the first input parameter is less than or equal to the second input parameter. It tests whether the first input parameter is less than or equal to the second input parameter.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested to determine whether it is less than or equal to parameter 2.
  • Parameter 2: A value to be tested to determine whether it is less than or equal to parameter 1.

Returns “True” if the value of the first input parameter is less than or equal to the value of the second input parameter; “False” otherwise.

06-Advance-Less-Than-or-Equal-To-Functoid

Advance Not Equal Functoid

Use the Advance Not Equal functoid to return the value “true” if the first input parameter is not equal to the second input parameter. It tests whether the two input parameters are not equal.

Parameters

This functoid requires two input parameters:

  • Parameter 1: A value to be tested for inequality with parameter 2.
  • Parameter 2: A value to be tested for inequality with parameter 1.

Returns “True” if the values of the two input parameters are not equal; “False” otherwise.

07-Advance-Not-Equal-Functoid

Advance Logical NOT Functoid

Use the Advance Logical NOT functoid to return the logical inversion of the input parameter. Use to logically negate the value of the Boolean input parameter.

Parameters

This functoid requires one input parameter only:

  • Parameter 1: A value that can be evaluated as either True or False.

Returns “True” if the specified input parameter evaluates to False; “False” otherwise.

08-Advance-Logical-NOT-Functoid

Advance Logical OR Functoid

Use the Advance Logical OR functoid to return the logical OR of input parameters. The input parameters have to be Boolean or numeric. It determines whether any of the specified input parameters are true.

Parameters

This functoid requires a minimum of two input parameters and a maximum of one hundred:

  • Parameter 1: A value that can be evaluated as either True or False.
  • Parameters 2 – 100: Values that can be evaluated as either True or False.

Returns “True” if any of the specified input parameters evaluate to True; “False” otherwise.

09-Advance-Logical-OR-Functoid

If-Then-Else Functoid

Use the If-Then-Else Functoid to return a value from one of two input parameters based on a condition. If the condition (first input) is True, then the value of the second input parameter is returned, otherwise the Third input is returned.

Parameters

This functoid requires three input parameters:

  • Boolean representing the result of a previous condition
  • The value to be returned if the condition is True.
  • The value to be returned if the condition is False.

If the condition is True, then the value of the second input parameter is returned, otherwise the Third input is returned.

10-If-Then-Else-Functoid

You can found and download Source Code, Application Binaries and Documentation in CodePlex BizTalk Mapper Extensions UtilityPack home page:

BizTalk Mapper Extensions UtilityPack
CodePlex

 

or from MSDN Code Gallery:

BizTalk Mapper Extensions UtilityPack for BizTalk Server 2013 R2 (685.6 KB)
Microsoft | MSDN Code Gallery

If you are following Logic Apps since its beginning, you must love the new Logic Apps Designer! That is a little closer to his on premise brother (BizTalk Orchestration Designer). I am saying this because now, finally, the new designer uses a top-down approach instead of a left-right approach that existed in the previous version of Logic Apps.

01-Logic-Apps-Designer-left-right-approach

Besides this big improvement in the Visual Flow (top-down approach instead of a left-right approach), the designer is being constantly improved with a several new capabilities such as:

  • Managed Connectors, search capabilities within the designer
    • Adding API Apps to a logic app is now more intuitive
  • We now also have the ability to collapse and expand the tiles/shapes
  • We have a first class experience with the HTTP + Swagger connector within the designer
  • If-else conditions within the designer itself. No need to open up the code view to look into the conditions box.
  • Call nested Logic Apps within the designer
  • And many more, the list go on and on!

02-Logic-Apps-Designer-top-down-approach

In this post we will provide some tips and tricks in working within the new Logic Apps Designer, in terms of actions that we can make on it, and describe some of its behavior

Adding actions (tiles or shapes) …

Adding actions in the middle of the existing flow is not allowed, at least for now. We are only able to add actions on the bottom of our Logic App flow or at the bottom of each condition branches.

To add an action or condition in the Logic App flow: we need to click on the plus sign, and then choose “Add a condition” or “Add an action

09-Logic-Apps-Designer-add-action-or-condition

To add an action inside condition branches, we need to click in “Add an action” button that is present on the top right corner of the condition branch

10-Logic-Apps-Designer-add-action-condition

  • We can add several actions inside a branch;
  • Nested conditions, at least for now, are not allowed;
  • And we can only add actions on the “If no, do nothing” branch, if we have at least one action in the “If yes” branch;

Deleting actions (tiles or shapes) …

If we take in consideration the flow in the picture above, you will notice 4 actions will have “…” (three dots) option in the tile. This means that we can take an action on them, in this case the “Delete” option:

03-Logic-Apps-Designer-Delete-option-action

However, in this sample the other two tiles/shapes available, “Search tweet” and “Condition” doesn’t have this option and we cannot easily delete this action or step.

The reason is because:

  • Their outputs are being used by other actions
    • In this case the “Search tweet” output is being used as input on the “Condition”, “Create File” and “Send approval email”
  • or they contain child action
    • The “Condition” tile as one “child” action in each branch;

04-Logic-Apps-Designer-Cannot-Delete-action

If we remove the “Search tweet” output being used as input on the “Condition”, “Create File” and “Send approval email” or remove these actions, we will now be able to delete the “Search tweet” action

05-Logic-Apps-Designer-Cannot-Delete-action-fixed

Moving actions (tiles or shapes) …

Noticed that you make a mistake and forgot to add an action between previous ones! Well, adding actions in the middle of the existing flow is not allowed, at least for now. However, we have the possibility to add and action in the end and drag and drop to another position inside your flow (arranging/modifying shape dispositions) … within certain conditions…

Again, if we take in consideration the Logic App that we are working above. We have several shapes, “Condition”, “Create file” and “Send approval email” that is consuming the output of a previous action, the “Search tweet

06-Logic-Apps-Designer-movind-Dependecies

If we try to move the “Condition” shape on top of the “Search tweet” shape:

11-Logic-Apps-Designer-moving-condition

We can’t move because it depends on the “Search tweet” action. However, if we try to do the same for the “Dynamic CRM Online – Create a new record”, that is still to be configured, i.e., it doesn’t have any dependency from previous ones

07-Logic-Apps-Designer-movind-no-Dependecies

We will then be able to drag and drop to any place of our flow

08-Logic-Apps-Designer-movind-no-Dependecies-1

08-Logic-Apps-Designer-movind-no-Dependecies-2

The only exception is that you cannot put on top of the trigger, in this case, the “Recurrence” shape.

In summary, you can move shapes only to:

  • Underneath the Logic Apps trigger;
  • Underneath their dependencies;
Moving actions inside conditions

Yes, we can move actions into the conditions branches, between them or remove them from within the conditions branches… again, within certain conditions regarding mainly the “If yes” branch:

  • If we have only one action inside the “If yes” branch
    • We cannot remove this action to outside the “If yes” branch, if the “If no” branch contains any action;
    • We need to delete or remove the shapes inside the “If no” branch to be able to move/remove the action inside the “If yes”;

The reason that this happens is because, the design doesn’t allow you to add action in the “If no” branch until you have an action inside the “If yes” branch

  • If we have several actions inside the “If yes” branch
    • We cannot remove the first action to outside the “If yes” branch, if the “If no” branch contains any action;
    • We need to delete or remove the shapes inside the “If no” branch to be able to remove the action inside the “If yes”;
    • Or we need to move the first action to another position inside the “If yes” branch and then move it to another position inside your flow (outside the “If yes”);

The reason that this happens is because, the first action inside the “If yes” is the “trigger” that allows you add actions in the “If no” branch… so it will be deep tied to the “If yes” branch and the design will not allow it to be moved

  • If we don’t have any action inside the “If yes” branch
    • We cannot move or add an action to the “If no, do nothing” branch;
    • We need to first add an action in the “If yes” branch;

The reason that this happens is because we need to have at least one action inside the If yes” branch to be able to add or move actions to the “If no, do nothing” branch – this is a default behavior of the design. The first action inside the “If yes” is the “trigger” that allows you add or move actions in the “If no, do nothing” branch.

Following my latest posts where I talked about the new “The ability to call nested Logic Apps directly from Logic Apps Designer”. Let’s look how a nested Logic App can help us overcome the current Logic Apps limitation regarding to for each operation, in special, the ability to add more than one action inside the loop;

Using/Implementing Looping inside Logic Apps

If you are used to work with BizTalk Server, we have certain shapes and behaviors inside BizTalk Orchestrations that we would love to have in Logic Apps, at a first glimpse, we may be surprised the lack of features/shapes to perform certain operations…however, that doesn’t mean that they are missing, most of the times we still can do those things… but in a different manner, so we may need to look the “problem” from another angle.

Looping is one of those things!

We don’t have any Looping shape, action or operation that we can use in the Logic App Designer, similar to what we have with Conditions.

01-Logic-Apps-Conditions-shape

In the previous designer (v1) we had an option in the connectors, “Repeat over the list“, that allowed us to iterate over an array of items and run an action for each item in that list.

The current design doesn’t have any more this option, but again that doesn’t mean that you can’t. In this new Logic App version or designer, if it detects that the input from the previous action or trigger it’s an array, and if you try to use this input in a subsequent action, it will, almost every time, automatically put you on a for each operation. Which means that you are running this action for each item in that list.

Let’s look, and use, the basic scenario that we are using in the last posts, were:

  • The Logic Apps is trigger by a new tweet containing the hashtag we are listening;
  • And then create a file;

For now, let’s ignore the dynamic creation of the file name using Azure Functions. So we have this basic Logic App

02-Logic-Apps-Looping-no-loop-Basic-flow

Because each tweet will generate a new execution of this Logic App, the trigger input will be a simple single message and not an array. If we switch to code view we will see that the Create file action will only be executed once and it’s not inside of any loop operation.

03-Logic-Apps-Looping-no-loop-Basic-flow-code-view

So let’s make some changes!

We will use a similar scenario, but this time we want that our Logic App:

  • To be triggered every hour;
  • Retrieve the last 20 tweets with the hashtag #LogicApp
  • And then create a file for each tweet in our Dropbox

For that we will create a new Logic App called “LoopingInsideLogicApps

  • Add a “Recurrence” trigger, and set the:
    • Frequency” property to “Hour
    • And the “Interval” property to “1

04-Logic-Apps-Looping-Reccurence-Trigger

  • Select the plus sign, and then choose “Add an action
  • From the search box select “Show Microsoft managed APIs”, type “twitter” and select the “Twitter – Search tweet” action
    • Set the “Query text” property with “#LogicApps” hashtag
    • You can expand the action to see all the properties if you click “” in the lower left corner
    • And see and define the number of result you want to return

05-Logic-Apps-Looping-Search-For-Tweets

  • Select the plus sign, and then choose “Add an action
  • From the search box select “Show Microsoft managed APIs”, type “Dropbox” and select the “Dropbox – Create file” action
    • Set the “Folder path” property, let’s say the root by typing: /
    • On the “File name” property, set the parameter “Tweet id” from the output of “Search tweet” action as input, following by the string “.txt”
    • On the “File Content” property, set the parameter “Tweet text” from the output of “Search tweet” action as input

06-Logic-Apps-Looping-For-each-Tweets-Create-File

If we “Save” our Logic Apps we will notice that 20 new files will be created in our Dropbox without us having defined any parameter or configuration inside the actions that would tell it to iterate over a list/array.

07-Logic-Apps-Looping-For-each-Tweets-Create-File-dropbox

This happened, because the designer “was smart” to understand that in input from the “Search Tweet” action is an array and automatically told the “Create file” action to work inside a for each so that it could iterate over all the items in the array.

Trying to add several actions inside a for each

Let’s say now that we want to call our Azure Function to generate the file name and create the file name in our Dropbox with it.

At first glance, we might say that:

  • After the “Twitter – Search tweet” action, we need to call our Azure Function: “CreateFileName”, because it doesn’t need inputs we set the input as an empty JSON message
  • And reconfigure the “Dropbox – Create file” action in order that the “File name” property is set with the “Filename” parameter from the output of “CreateFileName” function as input

08-Logic-Apps-Looping-For-each-Tweets-several-actions

If we once again, “Save” our Logic Apps and this time, execute it manually to for it to run. You will notice that:

  • The CreateFileName function is successfully executed;
  • But the Create file action failed. If you see the output, you will notice that the first file was created successfully but the following one’s got the following error:

File ‘/NewTweet_6785b86d-4dda-4119-968f-c189416f22bc.txt’ already exists. Use the Update operation to update an existing file.

09-Logic-Apps-Looping-For-each-Tweets-several-actions-create-dropbox-files-error

Maintaining in the run history, but selecting the “CreateFileName” action to see what was the output of the function we will notice that it was a simple output

   
{    
    "statusCode": 200,    
    "headers": {    
        "pragma": "no-cache",    
        "cache-Control": "no-cache",    
        "date": "Wed, 20 Apr 2016 15:01:18 GMT",    
        "set-Cookie": "ARRAffinity=9b8e91fd330bc5b8e4bdd3e129b0412d5daca54f6c2ff8a25f773cd80fad03aa;Path=/;Domain=functionssandromsdn.azurewebsites.net",    
        "server": "Microsoft-IIS/8.0",    
        "x-AspNet-Version": "4.0.30319",    
        "x-Powered-By": "ASP.NET"    
    },    
    "body": {    
        "FileName": "NewTweet_6785b86d-4dda-4119-968f-c189416f22bc.txt"    
    }    
}    

If we go back to our Logic App designer and switch to “Code View” we will notice why this happened. By setting the input of our function with and empty JSON message were are not telling to the Logic App to iterate over the output array from the “Search Tweet” action and call the function to generate a different file name for each item.

Instead if we analyze the code we will see that the “CreateFileName” function is only call one time, and we will send to the connector Dropbox this same value to all the tweets

10-Logic-Apps-Looping-For-each-Tweets-several-actions-create-dropbox-files-error-why

Trying to add several actions inside a for each (second shoot)

Ok, that didn’t work well. So what if we try to force the call to the Azure Function to be inside the for each statement?

Let’s them make some changes to our Logic App flow:

  • First, delete the “File Name” property from the “Dropbox – Create file” action
    • Leave it empty
  • Second, let’s send a dummy JSON message to our Azure Function, forcing this action to iterate over the “Search tweet” output array of items by setting the following JSON message:
   
{ "dummy": ['Tweet text'] }    

11-Logic-Apps-Looping-CreateFileName-Dummy-Msg

If we switch to “Code view” you will notice that now this action is under a for each:

   
"foreach": "@body('Search_tweet')"    

12-Logic-Apps-Looping-CreateFileName-Dummy-Msg-code

The problem of this approach is that

  • CreateFileName” action
  • And “Dropbox – Create file” action

Are in two different for each statements and if we try to use both in the same action, for example trying to set the “Body” parameter from the output “CreateFileName” function we will receive the following error:

13-Logic-Apps-Looping-CreateFileName-Design-error

Basic workaround to solve this problem

So, one of the workaround that you have is to modify your Azure Function, or create a new one to be able to receive one parameter:

  • the twitter message

and return two parameters:

  • The filename generated
  • And the twitter message that was passed as an input

For example:

   
module.exports = function (context, data) {    
        
  var Tweet = data.Tweet;    
  var d = new Date().getTime();    
  var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {    
        var r = (d + Math.random()*16)%16 | 0;    
        d = Math.floor(d/16);    
        return (c=='x' ? r : (r&0x3|0x8)).toString(16);    
  });    
        
  // Response of the function to be used later.    
  context.res = {    
    body: {    
      Msg: Tweet.text,    
      FileName: 'TweetMsg_' + uuid + ".txt"    
    }    
  };    
  context.done();            
};    

If we are using this strategy, we then need to configure the input of the function as:

   
{ "Text": ['Tweet text'] }    

14-Logic-Apps-Looping-CreateFileName-with-input-Msg

This will iterate over the list of tweets and will create another list containing all the information that we need to send to the Dropbox connector.

We then need to change all the parameters of the “Dropbox – Create file” action and instead of configuring with values from the “Search tweet” action that will force it to iterate, we will bind it to the output provide by the Azure function output

15-Logic-Apps-Looping-Dropbox-with-CreateFileName-values

This will tell to this action to iterate over the function output array to create all the files in Dropbox.

16-Logic-Apps-Looping-Dropbox-with-CreateFileName-values-code

Once again, if we “Save” our Logic App and run it, we will see that now everything will work fine.

However, in this basic workaround we are not adding several actions to a for each statement, instead we are avoiding, going around it and duplicate the content in another list/array… but it’s there another way?

How to add several actions inside a for each

Indeed, there is a better way to accomplish that, and the solution is to call another Logic App (at least while we do not have this functionality in the design).

Still remember our Logic App that we create in my previous posts called “AddFileToDropbox” that:

  • Its trigger manually, which means through a HTTP post, allowing to be invoked by other Logic Apps
  • Then it will call an Azure Function to dynamically generate a filename;
  • Create a Dropbox file
  • The filename it’s provide by the Azure Function;
  • And the content of the message it’s passed in the HTTP request that triggers this Logic App.
  • And finally return an HTTP response based on the status of the file creation

We will reuse this “child” Logic App in this demo now.

So what we need to do now is delete the last two action from our current Logic App:

  • “Dropbox – Create file” action
  • And call “CreateFileName” function action

And then call our “child” Logic App “AddFileToDropbox”. To accomplish that we need:

  • Select the plus sign, and then choose “Add an action
  • When you select “Add an Action”, the search box will be presented were all the available actions. But now, on the search box you can select the option: “Show Logic Apps in the same region
    • And then select “AddFileToDropbox
    • On the “Text” property we need to set the parameter “Tweet text” from the output of “Search tweet” action as input

17-Logic-Apps-Looping-Call-Logic-app-to-add-multiple-actions

If we now “Save” our Logic App and run it manually, we instantly see that:

  • the “Search tweet” action was successfully executed
  • and the “AddFileToDropbox” action is being executed

18-Logic-Apps-Looping-Call-Logic-app-to-add-multiple-actions-executions

We can go to our “child” Logic App to see its runs (the historic) and you probably see that some of them are already finish and others are still running

19-Logic-Apps-Looping-Call-Logic-app-to-add-multiple-actions-executions-child

Once all the child runs caused by the action of the parent are finished, the parent Logic App will receive the knowledge and will terminate successfully also (if all the runs finish successfully)

How is the behavior of calling a nested Logic App inside a foreach statement?

You may ask yourself how that works, it will execute on iteration one by one, in other words, in other words, will it call the child Logic App synchronously and wait for it to finish returning the response to call another one? Or it will be asynchronous?

Well in BizTalk terms it would be like using a Parallel Actions shape, were all the actions will be executed concurrently but independently but the parent Logic App processing does not continue until all have completed. The parent Logic App in this case will receive an array containing all the responses of the child executions.

In my last blog posts I talked about the new “The ability to call nested Logic Apps directly from Logic Apps Designer” and I mentioned that this great feature, not only allow us to create reusable pieces, but that will allow us to overcome some of the current Logic Apps limitations:

  • The ability to add more than one action inside the condition branch’s (this is actually a false statement);
  • or the ability to add more than one action inside the loop;

In this post we will address the first option, we will leave the second one for a dedicated post. Once again, in my previous post we created a Logic App called “AddFileToDropbox” that:

  • Its trigger manually, which means through a HTTP post, allowing to be invoked by other Logic Apps
  • Then it will call an Azure Function to dynamically generate a filename;
  • Create a Dropbox file
    • The filename it’s provide by the Azure Function;
    • And the content of the message it’s passed in the HTTP request that triggers this Logic App.
  • And finally return an HTTP response based on the status of the file creation

We will reuse this “child” Logic App in our demos here.

Our “basic” demo scenario

The important thing here is to demonstrate the concept itself, not whether this is a real case or not, so we will use connectors that are simple to test.

Let’s say that we want to listen to #LogicApps twitter hashtag, and:

  • If the tweet was made by someone other than me (@sandro_asp) then:
    • We need to call an Azure Function to dynamically generate a filename;
    • Create a Dropbox file
      • The filename it’s provide by the Azure Function;
      • And the content of the message will be the actual tweet text message.
  • If it’s a tweet made by me, let’s say I want to send it in an email to… my manager (just to annoy him Smile)

Creating a Logic App with conditions inside

Let’s create a Logic App call “ConditionsInsideLogicApp” (you can see the basic steps in my previous posts)

  • Add a “Twitter – When a new tweet appears” trigger, to look for a new tweet containing the hashtag “#LogicApps

01-Logic-Apps-Conditions-Add-Tweet-Appear

  • Select the plus sign, and then choose “Add a condition

02-Logic-Apps-Conditions-Add-a-condition

Note: if by any chance, you verify that the conditions branches, “if yes” and “if no, do nothing“, are not side by side as would be expected, but instead they are in sequence, one under the other:

03-Logic-Apps-Conditions-note

do not be alarmed, there is nothing wrong in your editor. It just means that your monitor does not have enough resolution, you are using a large zoom or your browser window is too small for render the conditions side by side. If you switch for a different monitor or zoom out, you will see that they will be rendered side-by-side:

04-Logic-Apps-Conditions-side-by-side

  • Now that we have the condition action we need to configure in following manner:
    • In the “Object name” property we need to set the parameter “Tweet by” from the output of “When a new tweet appears” trigger
    • In the “Relationship” property we need to choose the option “is not equal to
    • And finally on the “Value” property we need to statically set the value “@sandro_asp

05-Logic-Apps-Conditions-Tweet-condition-configuration

Note: If we look to our “If yes” branch we will see that we only have the ability to “Add an action” with means that we cannot create, at least for now, nested conditions (you probably can if you call another Logic App)

06-Logic-Apps-Conditions-add-action-if-branch

  • If we go to our “If yes” branch and “Add an action”
    • From the search box select “Show Azure Functions in my subscription” and select the Azure Function: “CreateFileName” and set the “Input payload object” as an empty JSON message:
   
{ }

07-Logic-Apps-Conditions-add-action-if-First-action

Based on your user experience in the Logic App designer, you may think that you cannot add more actions inside the “If yes” branch because you don’t have the plus sign underneath the Call Azure Function action. Well, you are wrong!

You actually can add several actions (conditions are not allowed) inside the same branch, by clicking once again the “Add an action” on the top right corner.

08-Logic-Apps-Conditions-add-action-if-second-action

  • From the search box, type “Dropbox” and select the “Dropbox – Create file” action
    • Set the Folder path, let’s say the root by typing: /
    • Click on the Filename and set the parameter “Body” from the output of “CreateFileName” function as input
    • Switch to code view to edit Create file inputs to have the expected values
   
@{body('CreateFileName')['FileName']}    
    • And then click on “File content” text box, and set the parameter “Text” from the output of “When an HTTP request is received” as input
  • On the “If no, do nothing” branch, click “Add an action
    • From the search box select “Show Microsoft managed APIs” type “email” and select the “Office 365 Outlook – Send Email” action
      • On the “Subject” property, statically set as “Tweet related to Logic Apps
      • On the “Body” property set the parameter “Tweet text” from the output of “When a new tweet appears” trigger
      • On the “To” property, set the email of your manager Smile

09-Logic-Apps-Conditions-add-action-if-no-email-action

At the end your Logic App will have a condition with:

  • Two actions in the “If yes” branch
  • And one action in the “if no” branch

13-Full-Logic-App-conditions

Save” your logic app and wait to a tweet to appear, we will see that a new file was added in your Dropbox or an email as sent to your manager

Second option

Because we already created a Logic App that makes the necessary steps for the condition “If yes“:

  • Generate a file name
  • And create a file in dropbox

We instead of having several action, creating and repeating the same steps over an over again, we can call the “AddFileToDropbox” to do the same steps for us.

10-Logic-Apps-Conditions-add-action-if-call-Logic-App

Advantages of this approach:

  • We are reusing “code”
  • We can add “nested” conditions

Disadvantages:

  • ·We loose a little the run action history because we then have the action “AddFileToDropbox” but we cannot easily go to the child run and correlate the existing runs.

11-Logic-Apps-Conditions-runs-action-history

12-Logic-Apps-Conditions-runs-action-history-2

Microsoft Integration Product team announced this month on their monthly webcast (that you can see it here) some of the new features that are now available in Logic Apps like:

  • “Run” any trigger now
  • HTTP Webhook in Designer
  • SQL Azure Connector now supports Store Procedures
  • Azure Functions Integration and a few other features

In my last blog posts I talked about the new “Azure Functions Integration” (here and here). One of the features that they announced that it would soon be available was “Call nested workflow in Designer”, and the good news is that it is now available to us “to play”.

This is a great feature that will allow us to:

  • Create reusable pieces
  • Overcome some Logic Apps limitations, and what I mean by that is for example:
    • The ability to add more than one action inside the condition branch’s (this is actually a false statement);
    • or the ability to add more than one action inside the loop;

Call nested workflows, or Logic Apps, from another Logic App is actually not a new feature. We could previous achieve this as you can see in this post: Using Nested Azure Logic Apps … or Invoking Flows from another Logic App. However, it was not a “first class” experience and we were forced to implement some workarounds to be able to achieve this goal…. Not anymore! Now it way more simple and with a good user experience in the designer!

Creating the child Logic App

The first thing that you need to know is that, if you want to create a Logic App that you can call through another Logic App:

  • The trigger of that Logic App needs to be “Manual – When an HTTP request is received
  • And it should finish with an “Response” action

If we don’t add the “Response” action in our child Logic App what will happen is:

  • The parent will call the child workflow
  • The child workflow will be executed
  • But the parent workflow will fail with the following error:

To wait on nested workflow ‘{Child Logic App Name}’, it must contain a response action.

01-Logic-Apps-father-workflow-fails-without-child-response

Let’s create a simple scenario to demonstrate how we can call nested Logic Apps directly from Logic Apps Designer. In this sample we want to create a child Logic App that:

  • It’s trigger manually, which means through a HTTP post;
    • In this case, let’s consider the following JSON message
   
{    
   "Request": {    
      "text": "text that we want to put in file content"     
   }    
}    
  • Then it will call an Azure Function to dynamically generate a filename;
  • Create a Dropbox file
    • The filename it’s provide by the Azure Function;
    • And the content of the message it’s passed in the HTTP request that triggers this Logic App.
  • And finally return an HTTP response based on the status of the file creation;

To accomplish that we need:

  • On the Azure Portal click on “Logic Apps” option and click “Add” to create a new Logic App.
  • In the “Create logic app” panel we need to give it:
    • A “Name”, for example “AddFileToDropbox
    • Select the desired “Subscription” (if you have more than one)
    • Select the desired “Resource Group” or create a new one
    • And finally define the “App Service Plan” by choosing an existing plan or add a new one
  • Click “Create” for the deployment process to start.

We have to wait a few seconds for the deployment process to finish, once it’s finished we will be notified in the notification area. You can check for more Logic Apps create process details here.

If we select, from the Logic Apps list, the Logic App created above to open de Logic Apps Designer, we then need to:

  • From “Show Microsoft management APIs” option search box, click on the “Manual – When an HTTP request is received” trigger

02-Logic-Apps-Add-Manual-HTTP-Request-Trigger

  • Now, we need to give to the HTTP trigger the JSON message schema that will be send, so that we can easily create steps.
    • Unfortunately, for now is still not possible to configure the schema directly from the designer

03-Logic-Apps-Manual-HTTP-Request-Cannot-add-schema

    • While Product team is improving this feature, for now we need to switch to “Code view” and configure the schema on the “triggers” –> “manual” –> “inputs” –> “schema” property, that for now it’s an empty schema

04-Logic-Apps-Manual-HTTP-Request-set-schema-code-view

    • To generate the JSON schema we can use the JSONSchema.net online tool to easily do that task for us.
    • We just need to past our JSON message sample provide above and click “Generate Schema

05-Logic-Apps-JSON-Schema-Generator

    • We then need to copy the JSON Schema from the website and paste it to on our Logic App code view schema property

06-Logic-Apps-Manual-HTTP-Request-set-schema-code-view-fixed

  • Now that we have set our trigger, let’s move to the next step of our Logic App.
  • Select the plus sign, and then choose “Add an action

00-plus-action

  • When you select “Add an Action”, again the search box will be presented were all the connectors with their available actions are listed. But now, on the search box you can select the option: “Show Azure Functions in my subscription

06-Logic-Apps-Add-Action-Azure-Function

  • From the search box select “Show Azure Functions in my subscription” let’s select (if you already have it) or create a new WebHook Node function call: “CreateFileName
   
module.exports = function (context, data) {    
        
  var Tweet = data.Tweet;    
  var d = new Date().getTime();    
  var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {    
        var r = (d + Math.random()*16)%16 | 0;    
        d = Math.floor(d/16);    
        return (c=='x' ? r : (r&0x3|0x8)).toString(16);    
  });    
        
  // Response of the function to be used later.    
  context.res = {       
    body: {    
      FileName: 'NewTweet_' + uuid + ".txt"    
    }            
  };    
    • This function doesn’t need any input, so we will set the “Input payload object” as an empty JSON message:
   
{}    

07-Logic-Apps-Call-Azure-Function-CreateFileName

  • Once again, select the plus sign, and then choose “Add an action
  • From the search box, type “Dropbox” and select the “Dropbox – Create file” action

08-Logic-Apps-Add-action-Dropbox-Create-file

    • Set the Folder path, let’s say the root by typing: /
      • Note: That you can also use the “…” button to navigate to your Dropbox folders
    • Click on the Filename and set the parameter “Body” from the output of “CreateFileName” function as input
      • You don’t need to do this step, but the reason why I do it’s because I am a little lazy and I want the designer do half of the work for me
    • And then click on “File content” text box, and set the parameter “Text” from the output of “When an HTTP request is received” as input

09-Logic-Apps-Add-action-Dropbox-Create-file-configured

    • On the top of the Logic Apps Designer click in “Code view” option, for us to fix the “File Name” input parameter
    • Then we need to edit Create file inputs to have the expected values
      • Change the “inputs” –> “queries” –> “name” property to:
   
@{body('CreateFileName')['FileName']}    

10-Logic-Apps-Add-action-Dropbox-Create-file-configured-fixed

  • Now if we change to the Logic Apps Designer, by clicking “Designer” option, we will notice that the designer already renders this property and set the expected parameter.
  • Once again, select the plus sign, and then choose “Add an action
  • From the search box, type “Response” and select the “Response” action
    • Set the “Status Code” with the value “200
    • And set the “Body” as “The file created was ” and the filename parameter from the output of “CreateFileName” function as input

11-Logic-Apps-Add-Response

  • Save your Logic App and we are now ready to use/call this workflow from other Logic Apps.

Creating the parent Logic App

If we now create another Logic App – the parent – let’s call it “CallNestedLogicAppDemo”.

  • Add a “Twitter – When a new tweet appears” trigger, to look for a new tweet containing the hashtag “#LogicApps
  • Select the plus sign, and then choose “Add an action
  • When you select “Add an Action”, the search box will be presented were all the available actions. But now, on the search box you can select the option: “Show Logic Apps in the same region

12-Logic-Apps-Show-Logic-Apps-in-the-same-region

  • This will show you all the available Logic Apps that you can call from your current Logic App

13-Logic-Apps-Show-Logic-Apps-in-the-same-region-list

    • Let’s select the “AddFileToDropbox” that we create earlier
  • When you select the Logic App that you want to call, the designer will render the action containing the schema inputs that we need to pass to the nested Logic App
    • In our case, the “Text”.

14-Logic-Apps-Show-AddFileToDropbox

How cool is that! Yeh!

  • Don’t change the “Trigger name” this should be set as: “Manual”
    • Why? Because this is the default trigger type from your previous child Logic App.
  • And the “Text” property we need to set the parameter “Tweet text” from the output of “When a new tweet appears

15-Logic-Apps-Show-AddFileToDropbox-configured

Once again, “Save” your logic app and wait to a tweet to appear, we will see that a new file was added in your Dropbox:

16-Logic-Apps-Show-file-being-added-to-dropbox

You can also check the runs of the Logic App to see if it runs successfully or if an error occurred and what, how long it took to run, inputs and outputs, among others

17-Logic-Apps-Show-logic-app-runs

Unfortunately, here we don’t have a similar functionality that we have on BizTalk Orchestration Debugger, the ability to “View Called orchestration”. It would be great to have here a similar one “View Called workflow runs”. I add this request on User voice and if you like it you can go there and vote.

If you want to achieve this, you need to go to the child Logic app and see it’s runs, and check if all steps are proper executed.

17-Logic-Apps-Show-child-logic-app-runs

You now can reuse this “AddFileToDropbox” in several Logic Apps that you have or will create in the future.

The parent will always execute successfully because you always returning status 200 from your child Logic App!

Well, yes indeed my last step is returning a status 200 for the parent Logic App, but this will only happen if all previous steps of the flow will be executed successfully, otherwise an error status will be received.

To put this scenario in test, I changed the “Dropbox – Create file” action in my “AddFileToDropbox” Logic App to always create a file with the name “Demo1.txt”. I then waited to appear two different tweets. The result:

  • The first execution was executed successfully
  • And the subsequent executions failed

18-Logic-Apps-Show-logic-app-runs-failed

With the following error:

   
{    
    "statusCode": 502,    
    "headers": {},    
    "body": {    
        "error": {    
            "code": "NoResponse",    
            "message": "The server did not received a response from an upstream server. Request tracking id '08587405217965861441'."    
        }    
    }    
}    

If we check the child execution, we will see that the Logic App is failing in the “Dropbox – File Create” action and the “Response” action will be aborted

19-Logic-Apps-Show-child-logic-app-runs-failed