Tutorial: Create schedule-based automated workflows using Azure Logic Apps

Applies to: Azure Logic Apps (Consumption)

This tutorial shows how to build an example logic app workflow that runs on a recurring schedule. Specifically, this example workflow checks the travel time, including the traffic, between two places and runs every weekday morning. If the time exceeds a specific limit, the workflow sends you an email that includes the travel time and the extra time necessary to arrive at your destination. The workflow includes various steps, which start with a schedule-based trigger followed by a Bing Maps action, a data operations action, a control flow action, and an email notification action.

In this tutorial, you learn how to:

  • Create a logic app and blank workflow.
  • Add a Recurrence trigger that specifies the schedule to run your workflow.
  • Add a Bing Maps action that gets the travel time for a route.
  • Add an action that creates a variable, converts the travel time from seconds to minutes, and stores that result in the variable.
  • Add a condition that compares the travel time against a specified limit.
  • Add an action that sends an email if the travel time exceeds the limit.

When you're done, your workflow looks similar to the following high level example:

Screenshot shows high-level overview for an example recurring workflow.

Prerequisites

Create a Consumption logic app workflow

  1. In the Azure portal, sign in with your Azure account.

  2. On the Azure home page, select Create a resource.

  3. On the Azure Marketplace menu, select Integration > Logic App.

    Screenshot shows Azure Marketplace menu with selection options for Integration and Logic App.

  4. On the Create Logic App pane, on the Basics tab, provide the following information about your logic app resource.

    Screenshot shows Azure portal, logic app creation pane, and info for new logic app resource.

    Property Required Value Description
    Subscription Yes <Azure-subscription-name> Your Azure subscription name. This example uses Pay-As-You-Go.
    Resource Group Yes LA-TravelTime-RG The Azure resource group where you create your logic app resource and related resources. This name must be unique across regions and can contain only letters, numbers, hyphens (-), underscores (_), parentheses ((, )), and periods (.).
    Name Yes LA-TravelTime Your logic app resource name, which must be unique across regions and can contain only letters, numbers, hyphens (-), underscores (_), parentheses ((, )), and periods (.).
  5. Before you continue making selections, go to the Plan section. For Plan type, select Consumption to show only the settings for a Consumption logic app workflow, which runs in multitenant Azure Logic Apps.

    The Plan type property also specifies the billing model to use.

    Plan type Description
    Standard This logic app type is the default selection and runs in single-tenant Azure Logic Apps and uses the Standard pricing model.
    Consumption This logic app type runs in global, multitenant Azure Logic Apps and uses the Consumption pricing model.
  6. Now continue with the following selections:

    Property Required Value Description
    Region Yes West US The Azure datacenter region for storing your app's information. This example deploys the sample logic app to the West US region in Azure.
    Enable log analytics Yes No This option appears and applies only when you select the Consumption logic app type. Change this option only when you want to enable diagnostic logging. For this tutorial, keep the default selection.
  7. When you're done, select Review + create. After Azure validates the information about your logic app resource, select Create.

  8. After Azure deploys your app, select Go to resource.

    The Azure portal opens your Consumption logic app and the workflow designer.

Next, add the Schedule trigger named Recurrence, which runs the workflow based on a specified schedule. Every workflow must start with a trigger, which fires when a specific event happens or when new data meets a specific condition. For more information, see Create an example Consumption logic app workflow in multitenant Azure Logic Apps.

Add the Recurrence trigger

  1. On the workflow designer, follow these general steps to add the Recurrence trigger.

  2. Rename the Recurrence trigger with the following title: Check travel time every weekday morning.

    Screenshot shows workflow designer and information pane for Recurrence trigger with renamed trigger.

  3. In the trigger information box, provide the following information:

    Property Value Description
    Interval 1 The number of intervals to wait between checks
    Frequency Week The unit of time to use for the recurrence
    On these days Monday, Tuesday, Wednesday, Thursday, Friday This setting is available only when you set the Frequency to Week.
    At these hours 7, 8, 9 This setting is available only when you set the Frequency to Week or Day. For this recurrence, select the hours of the day. This example runs at the 7, 8, and 9-hour marks.
    At these minutes 0, 15, 30, 45 This setting is available only when you set the Frequency to Week or Day. For this recurrence, select the minutes of the day. This example starts at the zero-hour mark and runs every 15 minutes.

    When you're done, the trigger information box appears similar to the following example:

    Screenshot shows week-related properties set to values described in the preceding table.

    This trigger fires every weekday, every 15 minutes, starting at 7:00 AM and ending at 9:45 AM. The Preview box shows the recurrence schedule. For more information, see Schedule tasks and workflows and Workflow actions and triggers.

  4. Save your workflow. On the designer toolbar, select Save.

Your logic app resource and updated workflow are now live in the Azure portal. However, the workflow only triggers based on the specified schedule and doesn't perform other actions. So, add an action that responds when the trigger fires.

Get the travel time for a route

Now that you have a trigger, add a Bing Maps action that gets the travel time between two places. Azure Logic Apps provides a connector for the Bing Maps API so that you can easily get this information. Before you start this task, make sure that you have a Bing Maps API key as described in this tutorial's prerequisites.

  1. In the workflow designer, under the Recurrence trigger, follow these general steps to add a Bing Maps action named Get route.

  2. If you don't have a Bing Maps connection, you're asked to create a connection. Provide the following connection information, and select Create.

    Property Required Value Description
    Connection Name Yes <Bing-Maps-connection-name> Provide a name for your connection. This example uses BingMapsConnection.
    API Key Yes <Bing-Maps-API-key> Enter the Bing Maps API key that you previously received. If you don't have a Bing Maps key, learn how to get a key.

    The following example shows sample connection information:

    Screenshot shows Bing Maps connection box with the example connection name and Bing Maps API key.

  3. Rename the Get route action with the following title: Get route and travel time with traffic.

  4. In the action, open the Advanced parameters list, and add the following properties:

    • Optimize
    • Distance Unit
    • Travel Mode
  5. Now enter the values for the following action's properties:

    Property Value Description
    Waypoint 1 <start-location> Your route's origin. This example specifies an example starting address.
    Waypoint 2 <end-location> Your route's destination. This example specifies an example destination address.
    Optimize timeWithTraffic A parameter to optimize your route, such as distance, travel time with current traffic, and so on. Select the parameter value, timeWithTraffic.
    Distance Unit <your-preference> The unit of distance for your route. This example uses Mile as the unit.
    Travel Mode Driving The travel mode for your route. Select Driving mode.

    For more information about these parameters and values, see Calculate a route.

    The following example shows sample action information:

    Screenshot shows completed action named Get route.

  6. On the designer toolbar, select Save.

Next, create a variable so that you can convert and store the current travel time as minutes, rather than seconds. That way, you can avoid repeating the conversion and use the value more easily in later steps.

Create a variable to store travel time

Sometimes, you might want to run operations on data in your workflow, and then use the results in later actions. To save these results so that you can easily reuse or reference them, you can create variables that store those results after processing. You can create variables only at the top level in your workflow.

By default, the Get route action returns the current travel time with traffic in seconds from the Travel Duration Traffic property. By converting and storing this value as minutes instead, you make the value easier to reuse later without converting again.

  1. Under the Get route action, follow these general steps to add a Variables action named Initialize variable.

  2. Rename Initialize variable action with the following title: Create variable to store travel time.

  3. Provide the following action information:

    Property Value Description
    Name travelTime The name for your variable. This example uses travelTime.
    Type Integer The data type for your variable
    Value <initial-value> An expression that converts the current travel time from seconds to minutes (see the steps under this table).

    To create the expression for the Value property, follow these steps:

    1. Select inside the Value box, which shows the options for the dynamic content list (lightning icon) and expression editor (formula icon), and then select the expression editor.

      Screenshot shows the action named Initialize variable with cursor inside the Value property.

      The expression editor provides functions that you can use to perform operations in your expression. The dynamic content list provides the outputs from previous actions that you can select as inputs to use with subsequent actions in your workflow.

    2. In the expression editor, enter the following expression: div(,60)

      Screenshot shows the expression editor with the expression entered for div(,60).

    3. Within the expression, put your cursor between the left parenthesis (() and the comma (,), and select Dynamic content.

      Screenshot shows where to put cursor in the div(,60) expression and select Dynamic content.

    4. In the dynamic content list, under select the output value, Travel Duration Traffic.

      If the output doesn't appear, in the dynamic content list, next to the action name, select See more.

      Screenshot shows the value selected for output named Travel Duration Traffic.

    5. After the output value resolves inside the expression, select Add.

      Screenshot shows selected Add button.

      The following example shows how the Value property now appears:

      Screenshot shows the Value property with resolved expression.

  4. Save your workflow. On the designer toolbar, select Save.

Next, add a condition that checks whether the current travel time is greater than a specific limit.

Compare the travel time with limit

  1. Under the Create variable to store travel time action, follow these general steps to add a Control action named Condition.

  2. Rename the condition with the following title: If travel time exceeds limit

  3. Build a condition that checks whether the travelTime output value exceeds your specified limit as described and shown here:

    1. In the condition, on the condition's left side, select inside the Choose a value box, and then select the option for the dynamic content list (lightning icon).

    2. Under Variables, select the output named travelTime.

      Screenshot shows left box named Choose a value, opened dynamic content list, and travelTime output selected.

    3. In the middle comparison box, select the operator named is greater than.

    4. On the condition's right side, in the Choose a value box, enter the following value: 15

      When you're done, the condition looks like the following example:

      Screenshot shows finished condition for comparing the travel time to the specified limit.

  4. Save your workflow. On the designer toolbar, select Save.

Next, add the action to run when the travel time exceeds your limit.

Send email when limit exceeded

Now, add an action that sends email when the travel time exceeds your limit. This email includes the current travel time and the extra time necessary to travel the specified route.

  1. In the condition's True branch, select the plus sign (+), and then select Add an action.

  2. Follow these general steps to add an Office 365 Outlook action named Send an email.

    • For Azure work or school accounts, select the Office 365 Outlook version.
    • For personal Microsoft accounts, select the Outlook.com version.

    This example continues by selecting Office 365 Outlook.

    Screenshot shows Office 365 Outlook action selected named Send email.

  3. If you don't already have a connection, sign in and authenticate access to your email account when prompted.

    Azure Logic Apps creates a connection to your email account.

  4. Rename the action with the following title: Send email with travel time

  5. For the To property, enter the recipient's email address. For testing purposes, you can use your email address.

  6. For the Subject property, specify the email's subject, and include the travelTime variable by following these steps:

    1. Enter the text Current travel time (minutes): with a trailing space. Keep your cursor in the Subject box, and select the option for the dynamic content list (lightning icon).

    2. In the dynamic content list, in the Variables section, select the variable named travelTime.

      Note

      If the dynamic content list doesn't automatically show the travelTime variable, next to the Variables label, select See more. The variable might not appear because the Subject property expects a string value, while travelTime is an integer.

  7. For the Body property, specify the content for the email body by following these steps:

    1. Enter the text Add extra travel time (minutes): with a trailing space. Keep your cursor in the Body box, and select the option for the expression editor (formula icon).

    2. In the expression editor, enter sub(,15) so that you can calculate the number of minutes that exceed your limit:

      Screenshot shows expression editor with the sub(,15) entered.

    3. Within the expression, put your cursor between the left parenthesis (() and the comma (,), and select Dynamic content.

      Screenshot shows where to put cursor in the sub(,15) expression, and select Dynamic content.

  8. Under Variables, select travelTime.

    Screenshot shows dynamic content list with travelTime variable selected.

    1. After the variable resolves inside the expression, select Add.

      The Body property now appears as shown here:

      Screenshot shows the resolved expression in the email action's Body property.

  9. Save your workflow. On the designer toolbar, select Save.

Next, test and run your workflow, which now looks similar to the following example:

Screenshot shows complete example logic app workflow.

Run your workflow

To manually start your workflow, on the designer toolbar, select Run > Run.

  • If the current travel time stays under your limit, your workflow does nothing else and waits or the next interval before checking again.

  • If the current travel time exceeds your limit, you get an email with the current travel time and the number of minutes above your limit. The following example shows a sample email that your workflow sends:

    Screenshot shows example email that reports current travel time and extra travel time that exceeds your specified limit.

    Tip

    If you don't get any emails, check your email's junk folder. Your email junk filter might redirect these kinds of mails. Otherwise, if you're unsure that your workflow ran correctly, see Troubleshoot your workflow.

Congratulations, you've created and run a schedule-based recurring workflow.

Clean up resources

Your workflow continues running until you disable or delete the logic app resource. When you no longer need the sample workflow, delete the resource group that contains your logic app resource and related resources.

  1. In the Azure portal's search box, enter the name for the resource group that you created. From the results, under Resource Groups, select the resource group.

    This example created the resource group named LA-TravelTime-RG.

    Screenshot that shows the Azure search box with "la-travel-time-rg" entered and LA-TravelTime-RG selected.

    Tip

    If the Azure home page shows the resource group under Recent resources, you can select the group from the home page.

  2. On the resource group menu, check that Overview is selected. On the Overview pane's toolbar, select Delete resource group.

    Screenshot shows resource group's Overview pane with pane toolbar selected option for Delete resource group.

  3. In the confirmation pane that appears, enter the resource group name, and select Delete.

Next step

In this tutorial, you created a logic app workflow that checks traffic based on a specified schedule (on weekday mornings), and takes action (sends an email) when the travel time exceeds a specified limit. Now, learn how to build a workflow that sends mailing list requests for approval by integrating Azure services, Microsoft services, and other Software-as-a-Service (SaaS) apps.