Home > database >  Azure Logic App HTTP Action step - dynamically get endOfDate date
Azure Logic App HTTP Action step - dynamically get endOfDate date

Time:03-25

i have an azure logic app with recurrence that will call api endpoint every midnight, im passing in two date properties in my request body that will include start of day and end of day.

Logic app has expression startOfDay() however they dont have endOfDay(), how can I dynamically get end of day in UTC format like startOfDay() does? Thanks

this is how my request body looks like but its also complaining about @startOfDay()

{
 "organizationId": 'f41186b0-7f09-42c5-8a9d-81a2ad2b0e61',
 "attemptedDeliveries": true,
 "cancelDateStart": @{startOfDay()},
 "cancelDateEnd": ""
}

CodePudding user response:

There is no direct expression for endOfDay but one of the workarounds is to addToTime and 'subtractFromTime' from enter image description here

Result:-

enter image description here

Codeview

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "Compose": {
                "inputs": {
                    "attemptedDeliveries": "@body('Parse_JSON')?['attemptedDeliveries']",
                    "cancelDateEnd": "@{outputs('endOfDay')}",
                    "cancelDateStart": "@{outputs('startOfDay')}",
                    "organizationId": "@{body('Parse_JSON')?['organizationId']}"
                },
                "runAfter": {
                    "endOfDay": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            },
            "Parse_JSON": {
                "inputs": {
                    "content": "@triggerBody()",
                    "schema": {
                        "properties": {
                            "attemptedDeliveries": {
                                "type": "boolean"
                            },
                            "cancelDateEnd": {
                                "type": "string"
                            },
                            "cancelDateStart": {
                                "type": "string"
                            },
                            "organizationId": {
                                "type": "string"
                            }
                        },
                        "type": "object"
                    }
                },
                "runAfter": {},
                "type": "ParseJson"
            },
            "endOfDay": {
                "inputs": "@subtractFromTime(addToTime(startOfDay(utcNow()),1,'Day','o'),1,'Second','yyyy-MM-ddTHH:mm:ss')",
                "runAfter": {
                    "startOfDay": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            },
            "startOfDay": {
                "inputs": "@startOfDay(utcNow(),'yyyy-MM-ddTHH:mm:ss')",
                "runAfter": {
                    "Parse_JSON": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "manual": {
                "inputs": {
                    "schema": {}
                },
                "kind": "Http",
                "type": "Request"
            }
        }
    },
    "parameters": {}
}

Here is the json that I'm receiving from my body of Http trigger

{
 "organizationId": "f41186b0-7f09-42c5-8a9d-81a2ad2b0e61",
 "attemptedDeliveries": true,
 "cancelDateStart": "",
 "cancelDateEnd": ""
}

Updated Answer


After the follow up here my logic app

enter image description here

Result:

enter image description here

Codeview

{
    "definition": {
        "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
        "actions": {
            "endOfDay": {
                "inputs": "@subtractFromTime(addToTime(startOfDay(utcNow()),1,'Day','o'),1,'Second','yyyy-MM-ddTHH:mm:ss')",
                "runAfter": {
                    "startOfDay": [
                        "Succeeded"
                    ]
                },
                "type": "Compose"
            },
            "startOfDay": {
                "inputs": "@startOfDay(utcNow(),'yyyy-MM-ddTHH:mm:ss')",
                "runAfter": {},
                "type": "Compose"
            }
        },
        "contentVersion": "1.0.0.0",
        "outputs": {},
        "parameters": {},
        "triggers": {
            "Recurrence": {
                "evaluatedRecurrence": {
                    "frequency": "Second",
                    "interval": 30
                },
                "recurrence": {
                    "frequency": "Second",
                    "interval": 30
                },
                "type": "Recurrence"
            }
        }
    },
    "parameters": {}
}

After endOfDay connector you can add 4 parallel HTTP triggers and add logic to it.

REFERENCES: Reference guide to workflow expression functions in Azure Logic Apps and Power Automate

  • Related