Skip to main content

Use of Expression in Microsoft flow through an example

Most of the basic flows can be configured using the templates provided by Microsoft. But in real time we will be developing flows which have complexity. Expression play an important role in fulfilling the requirements.
Scenario: -  We have project details list which has the below columns, we need to intimate the project team before 2 days of the end date. (Please note that this scenario is picked up from one of the Microsoft insight demo)




The following points needs to be implemented

·         Only title and End time are mandatory fields, Start time if not entered needs to be taken as the current date.
·         Number of days is the difference between the start time and end time.  
·         Email needs to be sent before 2 days of the end date.
·         If any attachments they need to be attached to the mail being send from the flow.
Below is the complete flow.



If any one needs a copy of the complete flow please drop a comment.



Let me explain each step of the flow.
The First one is a trigger, the flow starts whenever a new item is created. The second action is update the item, in the update item we have two expressions
StartTime:- coalesce(triggerBody()?['Start_x0020_Time'],utcNow())
Coalesce function will return the first non null object.  If Start time is provided we take that value or we use the current date time.
Num of Days:- div(sub(ticks(triggerBody()?['End_x0020_Time']),ticks(coalesce(triggerBody()?['Start_x0020_Time'],utcNow()))),864000000000)
For calculating the number of days we need the difference between the start time and end time, before doing a subtraction we convert the date time string to ticks.

24 hrs = 864000000000 ticks

We subtract the ticks value for both the start and end times and divide the value by the no of ticks in 24hrs.





We delay the flow till the project is due by 2 days.  Here we use the function subtract from time.
subtractFromTime(body('Update_item')['End_x0020_Time'],2,'day')

First parameter will be the End Time string , second parameter is number of a specified time unit to be subtracted (2) and third parameter is the unit of time specified to subtract(‘day’).



Select action is from the data operations connector, it will trnaform an array from one form to another using expression given in the map. Here we will split the value in email aliases column using the comma sperator. Then we will append @outlook.com to each item of the array.
split(body('Update_item')?['Email_x0020_Aliases'],',')

concat(item(),'@outlook.com')





Here we are getting the list of attachments for the item.



We iterate through each attachment and get the attachment content, then we use the compose action to create a JSON object of the attachments. The json object contains name and content bytes.



Finally we send the email, Attchments field contains the output of compose action.
join(body('Select'),';')

Email alaises are joined using a semicolon and passed into the CC field of send mail.
if(greaterOrEquals(body('Update_item')?['Start_x0020_Time'],body('Update_item')['End_x0020_Time']),'Warning: your start time is greater that end time','')
In the body of the mail we provide a condition if the start time is greate than end time then we display a Warning message.

That’s the end of the flow. The below link will be helpful if you need any information regarding the list of expressions available in the Microsoft flow.
https://docs.microsoft.com/en-in/azure/logic-apps/logic-apps-workflow-definition-language

Comments

Popular posts from this blog

How to upgrade typescript version in a SPFX solution

Why do we need to upgrade typescript version in a SPFX solution? As part of SPFX development we try to install 3 rd party libraries, there is a possibility that we might face type errors. For example, if we try to install ANTD package as part of your solution and use one of its components and try to build the solution. You might be seeing the type errors (TS1005,TS1109) as shown below. Typescript errors How to find out the typescript version? When you build (Gulp build) the SPFX solution you will be able to find out the typescript version from the build log as shown below.  Steps for updating the Typescript version. In SPFX solution typescript version has dependency on the @Microsoft/rush-stack-compiler package version.  In the package.json if you have @microsoft/rush-stack-compiler-2.7 then the typescript version is 2.7.x.    In the SPFX solution deleted the node_modules folder. It will remove all the packages that are installed.  On the package.js

Sharepoint 2013 REST API limitations with site columns

Recently i attended an interview for one of the company, the interviewer asked me a question on rest api. How to get a publishing image field using rest api? I answered its the normal way how we get the other fields. But later i came to know that its the wrong answer. After some research on Google came to know that there some limitations to rest api in sharepoint 2013. Below is a list of columns available using Rest api. Column Support Notes Hyperlink or Picture Supported Single Line of Text Supported Multiple lines of text :: Plaintext Supported Multiple lines of text :: Richtext Supported Returns unencoded XHTML Multiple lines of text :: Enhanced Richtext Supported Returns unencoded XHTML Choice Supported Column is required in the  $expand  keyword Counter Supported Integer Supported Number Supported Currency Supported Date Supported Returns an ISO 8601 date e.g. 2013-03-08T11:00:00 Yes/No Supported Returns true or false string literals Person or Group Supported Colu