<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://communities.bentley.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Scott Turner's Communities Activities</title><link>https://communities.bentley.com/members/93efdb0e_2d00_c9b4_2d00_4f8b_2d00_affb_2d00_24ba13529d05</link><description>Recent activity for people in Scott Turner's community</description><dc:language>en-US</dc:language><generator>Telligent Community 12</generator><item><title>Flow idea #4: Notify Reviewers and Approvers (Medium complexity)</title><link>https://communities.bentley.com/products/betas/projectwise-design-integration-connector-for-microsoft-flow-early-access/b/pw-integration-connector-blog/posts/notify-reviewers-and-approvers</link><pubDate>Mon, 13 May 2019 17:21:00 GMT</pubDate><guid isPermaLink="false">6dad98f5-dbc9-4c4d-a9ba-e9da8dc6aa8e:0e70d162-9ba0-4b95-8ccd-f5bee7eea603</guid><dc:creator>Audrius.Pundzevicius</dc:creator><description>&lt;h2&gt;&lt;span&gt;Scenario&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;A design firm is working on a complex project. Project leadership decided to use ProjectWise workflows to manage review and approval process of project deliverables. Use of workflows will ensure that everyone in the project follows the same process. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The design work will be done by ProjectWise Explorer users. Design review will happen partially with native applications and partially in the Bentley Connect environment via ProjectWise Web. Most of approval work will be done by users who use only cloud. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Many of reviewers and majority of approvers are only occasional ProjectWise users. They will login to the system only when there is review or approve tasks pending. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Users need to be informed when there is something to review or approve. In the past projects communicating about new work was done manually by project team members. Sometimes the work was delayed because reviewers were not notified about pending reviews and they did not go into the system to check for it. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Project information manager has decided to improve project communication. She decided to create a distribution matrix in ProjectWise and a Microsoft Flow that will send notifications automatically based on the matrix.&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;ProjectWise Configuration&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;&lt;span&gt;This Flow was created using ProjectWise sample datasource available with ProjectWise Design Integration server installation. We have used project \Documents\Gas Authority, Inc\Groningen Refinery\BSI700 - Storage Facility Expansion for this example. Every ProjectWise configuration is unique, so this Flow may need to be adapted to your actual configuration and project requirements.&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;span&gt;&lt;img alt=" " border="0" src="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/5238.P01.png" /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;Distribution list for the project is stored in a new folder 900 &amp;ndash; Admin\Distribution. Information manager created a new environment &amp;lsquo;Distribution&amp;rsquo; for this purpose. The environment has these columns:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;AreaShort &amp;ndash; area code for a document&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;State &amp;ndash; name of document state&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Action &amp;ndash; action that user is requested to perform&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Email &amp;ndash; address of reviewer or approver&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;span&gt;A notification will be sent to &lt;strong&gt;Email&lt;/strong&gt; asking to do &lt;strong&gt;Action&lt;/strong&gt; for all documents of &amp;lsquo;Complex&amp;rsquo; environment in this project that are in &lt;strong&gt;State&lt;/strong&gt; and have &lt;strong&gt;AreaShort&lt;/strong&gt; code will be sent to Email for Action. &lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;If there are several rules that match one document, then several people will be notified. For example, when something needs to be reviewed additional email can be sent for information to other people.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " border="0" src="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/5582.P02.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The project BSI700 has two new saved searches:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;Documents for Notification &amp;ndash; this search returns documents from environment Complex in states Pending Review and Pending Approval &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Distribution matrix&amp;ndash; this search returns all project distribution items&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;span&gt;Flow Algorithm&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The image below shows major steps of the flow. The brown boxes are Scopes. In Microsoft Flow scopes are used to group several actions. Scopes were used in this flow to make break it down into separate major steps and make it easier to understand.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;img alt=" " border="0" src="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/0028.P03.png" /&gt;&lt;/td&gt;
&lt;td&gt;
&lt;p&gt;&lt;span&gt;Let&amp;rsquo;s see what each major step is for:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;Scope &amp;lsquo;Get list of documents for notification&amp;rsquo; &amp;ndash; this part runs saved search &amp;lsquo;Documents for notification&amp;rsquo; and saves the list to variable &amp;lsquo;Documents&amp;rsquo; that is declared in action &amp;lsquo;Initialize variable&amp;rsquo; action.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Scope &amp;lsquo;Read project distribution matrix&amp;rsquo; runs saved search &amp;lsquo;Distribution&amp;rsquo; and saves results to a Flow variable &amp;lsquo;Distribution&amp;rsquo; declared in action &amp;lsquo;Initialize variable 2&amp;rsquo; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Scope &amp;lsquo;Match documents to recipients&amp;rsquo; combines lists of documents and distributions. There will be an item for each matching Document and Distribution combination saved to array &amp;lsquo;NotificationItem&amp;rsquo; defined in &amp;lsquo;Initialize variable 3&amp;rsquo;. The second list &amp;lsquo;Recipients&amp;rsquo; declared in &amp;lsquo;Initialize variable 4&amp;rsquo; will contain all unique email addresses that will require a notification email to be sent.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;The last scope &amp;lsquo;Send emails&amp;rsquo; creates emails with all relevant notifications and sends to recipients.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;&lt;span lang="EN-US"&gt;Reading documents and distribution using saved searches into variables&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;First read document information, including attribute values, into array &amp;lsquo;Documents&amp;rsquo;.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " border="0" src="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/6431.P04.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This is done in two steps:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;Run a saved search to get list of documents&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Loop search results and query document properties with attributes and then add them to the loop.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;&lt;span&gt;With some combinations of ProjectWise and WSG versions &amp;lsquo;Find documents by saved search&amp;rsquo; action does not always return attribute values correctly. This flow retrieves attributes in a separate loop for better compatibility.&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Distribution matrix information is retrieved using the same technique as documents:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;img alt=" " border="0" src="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/6443.P05.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Scope &amp;lsquo;Match documents to recipients&amp;rsquo;&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;In this part Flow fills in two variables declared below:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " border="0" src="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/0523.P06.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The Recipients variable will be simple array of email addresses that will be sent a notification email.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The NotificationItem is an array that has a distribution item matched with a document data.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Let&amp;rsquo;s see how they are filled in:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " border="0" src="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/7875.P07.png" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This scope contains a loop named &amp;lsquo;Apply to each document&amp;rsquo;. This loop runs for each document in Documents array.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The &amp;lsquo;Filter Array&amp;rsquo; action takes document information and selects matching distribution rules. Expression used to filter is this: &lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;code&gt;@and(equals(item()?['attributes']?['AreaShort'], items(&amp;#39;Apply_to_each_document&amp;#39;)?['attributes']?['AreaShort']), equals(item()?['attributes']?['State'],items(&amp;#39;Apply_to_each_document&amp;#39;)?['statename']))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;This long expression selects distribution items that have the same AreaShort and State values as current document. &lt;/span&gt;&lt;/p&gt;
&lt;table border="3"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;p&gt;&amp;nbsp;Function&amp;nbsp;&lt;em&gt;items(&amp;lsquo;loop name&amp;rsquo;)&lt;/em&gt;&amp;nbsp;can only be used inside a loop and returns current loop item.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;Function&amp;nbsp;&lt;em&gt;item()&amp;nbsp;&lt;/em&gt;is used inside looping actions, like&amp;nbsp;&lt;em&gt;Filter Array&lt;/em&gt;&amp;nbsp;in this case. It returns current item of the looping action.&lt;/span&gt;&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;The &amp;lsquo;Apply to each 3&amp;rsquo; is used to fill NotificationItem and Recipient arrays. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;lsquo;Append to array variable 3&amp;rsquo; simply stores current document and current distribution item into notification item array. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Then an email address is added to Recipient array, but only if it was not there before. Left side of Condition expression is this: &lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;code&gt;contains(variables(&amp;#39;Recipients&amp;#39;), items(&amp;#39;Apply_to_each_3&amp;#39;)?['attributes']?['Email'])&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The right one is:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;code&gt;&lt;span&gt;@true&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;Send Emails&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The last part of the flow is to send emails. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;img alt=" " border="0" src="/cfs-file/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/5314.P08.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;lsquo;Apply to each 4&amp;rsquo; loops through list of recipients. There will be one email sent per recipient.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;lsquo;Set variable&amp;rsquo; begins new email body in HTML. We set some basic styling to make table have visible borders.&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; table {border-collapse: collapse;}&lt;/code&gt;&lt;br /&gt;&lt;code&gt; table, td, th {border: 1px solid black;}&lt;/code&gt;&lt;br /&gt;&lt;code&gt; th, td {padding: 5px; text-align: left;}&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;/style&amp;gt;&lt;/code&gt;&lt;br /&gt; &lt;br /&gt;&lt;code&gt; &amp;lt;table&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;tr&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;th&amp;gt;Document&amp;lt;/th&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;th&amp;gt;Version&amp;lt;/th&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;th&amp;gt;State&amp;lt;/th&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;th&amp;gt;Requested Action&amp;lt;/th&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;/tr&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;lsquo;Filter array 2&amp;rsquo; selects distribution items for applicable this current email address. In advanced mode the where condition looks like this:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;code&gt;@equals(item()?['distr']?['attributes']?['Email'], items(&amp;#39;Apply_to_each_4&amp;#39;))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;lsquo;Apply to each 5&amp;rsquo; loops through filtered items and adds a single table row with document information as well as distribution information to EmailBody variable using &amp;lsquo;Append to string variable 2&amp;rsquo;:&lt;/span&gt;&lt;/p&gt;
&lt;p style="padding-left:30px;"&gt;&lt;code&gt;&amp;lt;tr&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;td&amp;gt;@{items(&amp;#39;Apply_to_each_5&amp;#39;)?['doc']?['name']}&amp;lt;br&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; (&amp;lt;a href=&amp;#39;@{items(&amp;#39;Apply_to_each_5&amp;#39;)?['doc']?['projectShareUrl']}&amp;#39;&amp;gt;Web Link&amp;lt;/a&amp;gt;) (&amp;lt;a href=&amp;#39;@{items(&amp;#39;Apply_to_each_5&amp;#39;)?['doc']?['projectWiseUrl']}&amp;#39;&amp;gt;PW Link&amp;lt;/a&amp;gt;)&amp;lt;/td&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;td&amp;gt;@{items(&amp;#39;Apply_to_each_5&amp;#39;)?['doc']?['version']}&amp;lt;/td&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;td&amp;gt;@{items(&amp;#39;Apply_to_each_5&amp;#39;)?['doc']?['stateName']}&amp;lt;/td&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;td&amp;gt;@{items(&amp;#39;Apply_to_each_5&amp;#39;)?['distr']?['attributes']?['Action']}&amp;lt;/td&amp;gt;&lt;/code&gt;&lt;br /&gt;&lt;code&gt; &amp;lt;/tr&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Lastly &amp;lsquo;Send an email (V2)&amp;rsquo; sends the email to a recipient (current item of &amp;lsquo;Apply to each 4&amp;rsquo;) with EmailBody variable as contents of the email.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The flow is ready to run now!&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;&lt;/span&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Download full height image of this flow &lt;a title="here" href="/products/betas/projectwise-design-integration-connector-for-microsoft-flow-early-access/m/pw-integration-connector-files/273776/download"&gt;here&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Flow idea #3: Send Automatic Notifications about New Documents</title><link>https://communities.bentley.com/products/betas/projectwise-design-integration-connector-for-microsoft-flow-early-access/b/pw-integration-connector-blog/posts/flow-idea-3-send-automatic-notifications-about-new-documents</link><pubDate>Tue, 08 Jan 2019 16:27:21 GMT</pubDate><guid isPermaLink="false">6dad98f5-dbc9-4c4d-a9ba-e9da8dc6aa8e:9d5c9c3b-207c-4076-ad5d-b2014e7dd5fc</guid><dc:creator>Audrius.Pundzevicius</dc:creator><description>&lt;p&gt;&lt;span&gt;Teams often need to know when important events, such as creation of new documents or document state changes, happen in their projects. In this article we will demonstrate how to create flow to do it. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;First, we must create a saved search in ProjectWise that returns documents of interest. In this example we will use a saved search that finds recently created documents. This is not a limit. A search can be a complex as the team needs it to be!&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Next, we will create a flow that sends email notification about new items from the search. Here is an algorithm:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;Run the saved search every hour to find documents modified during last 24 hours (or any interval longer than notification period).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Notify users about documents that were created since the last run of this flow. To do this, flow will save date and time of the last run in ProjectWise. It will use this time to list only documents created after previous run.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;&lt;span&gt;ProjectWise Configuration&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;We use ProjectWise sample datasource for this example. We added a global saved search to the project. In this example it returns documents created using last 24 hours in Work Area BSI400:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/1526.1.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;We have added a document &amp;lsquo;Last run time&amp;rsquo; Under 99_Automation folder to store timestamp of the last run:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/3683.2.png" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;span&gt;The Flow&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;span&gt;The complete flow is shown in screenshots below. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Note that for ProjectWise actions to work, the work area connection needs to be associated with ProjectWise Could project. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The flow starts with recurrence trigger. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x240/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/8463.3.png" /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The next two actions are for getting date and time for the last run and the current run:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;The &amp;ldquo;Find a document by path or GUID&amp;rdquo; gets properties of a document used to store time of previous run. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;The &amp;ldquo;Compose&amp;rdquo; step saves current time in time zone of ProjectWise server. The expression is: &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;img alt=" " src="/resized-image/__size/1040x240/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/1538.4.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Notice that in this case time zone of ProjectWise server is already UTC, so there will be no change to time stamp. If, for example, ProjectWise server was in US East Coast then the third parameter would have to be &amp;lsquo;Eastern Standard Time&amp;rsquo;. For complete list of time zone names see &lt;a href="https://msdn.microsoft.com/en-us/library/gg154758.aspx"&gt;https://msdn.microsoft.com/en-us/library/gg154758.aspx&lt;/a&gt; .&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/4353.5.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/6320.6.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The next action runs a saved search and finds all new documents. If this flow ran recently, then it may include documents about which it has already sent a notification. We will filter the list in a following step.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/0143.7.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;To avoid double notification, we use &amp;lsquo;Filter array&amp;rsquo; action to select only documents that were created after last run, i.e. all cases when last run timestamp is less than document creation date.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;To build this action:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span&gt;Add Body from &amp;lsquo;Find documents by saved search&amp;rsquo; action into &amp;lsquo;From&amp;rsquo; field&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;In the first field select description field from &amp;lsquo;Find document by path or GUID&amp;rsquo; action&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;In the second field choose any operator, e.g. Contains&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;In the third field select Creation time from saved search results&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Then go to advanced mode and edit expression to have &amp;ldquo;@less&amp;rdquo; operation instead.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/6472.8.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Initialize a variable to store HTML for email body and begin a table. It will be used in the if statement below. The &amp;lsquo;Description&amp;rsquo; field is from &amp;lsquo;Find document by path or GUID&amp;rsquo; action.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/5824.9.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Next, add a condition. The flow will send email only if filtered array is not empty. The expression in the first field is: &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/7080.10.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/8156.11.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/1122.12.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The first step in the Yes branch is to add a line for each document.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;First add action &amp;ldquo;Append to string variable&amp;rdquo;. Flow will automatically add &amp;lsquo;Apply to each&amp;rsquo; after referring to any property from the filtered array. &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Note that the properties used in &amp;lsquo;Append to string variable&amp;rsquo; must be taken from the filtered array and not from the saved search action.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/5481.13.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Lastly add actions to append end of the table and send the email. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;In this example the email is sent to a single fixed recipient. This flow could be easily improved to read list of recipients from an excel spreadsheet or configuration document properties. Such improvement would allow to update list of recipients without modifying the flow. We kept a single fixed email address for simplicity.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/2768.14.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The &amp;ldquo;No&amp;rdquo; branch of condition has no actions.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/0636.15.png" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Now the last step in this flow. Save time of this run that was retrieved in earlier &amp;lsquo;Compose&amp;rsquo; action.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt=" " src="/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-34-38-81/2703.16.png" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;The end.&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Let me Help You</title><link>https://communities.bentley.com/achievements/687f4b6d-e18a-4e55-836c-49926ca2c9d9</link><pubDate>Wed, 27 Feb 2019 08:21:40 GMT</pubDate><guid isPermaLink="false">6dad98f5-dbc9-4c4d-a9ba-e9da8dc6aa8e:b38c0ba0-2439-4e42-9dd1-a748f28fde64</guid><dc:creator /><description>Answer a question that is verified as helpful or correct.</description></item><item><title>Making Connections</title><link>https://communities.bentley.com/achievements/a0a973a4-3516-49d8-bea2-7e6377bc9cc1</link><pubDate>Mon, 25 Feb 2019 08:25:37 GMT</pubDate><guid isPermaLink="false">6dad98f5-dbc9-4c4d-a9ba-e9da8dc6aa8e:099bc9b1-003b-4983-91be-3e8d29c9071c</guid><dc:creator /><description>Make 5 friends within the community.</description></item><item><title>Ask A Question I</title><link>https://communities.bentley.com/achievements/460ac7df-7ccc-4c42-a204-9e05eef3be09</link><pubDate>Mon, 18 Feb 2019 01:02:21 GMT</pubDate><guid isPermaLink="false">6dad98f5-dbc9-4c4d-a9ba-e9da8dc6aa8e:648caf40-01b7-4bde-aee2-e793d6c2abf1</guid><dc:creator /><description>Ask a question in a forum.</description></item><item><title>How to Automatically &amp;quot;Purge Local Copy&amp;quot; without having to do it every time I am finished with a document?</title><link>https://communities.bentley.com/products/programming/projectwise_programming/f/projectwise-programming---forum/171218/how-to-automatically-purge-local-copy-without-having-to-do-it-every-time-i-am-finished-with-a-document</link><pubDate>Tue, 20 Nov 2018 22:21:40 GMT</pubDate><guid isPermaLink="false">6dad98f5-dbc9-4c4d-a9ba-e9da8dc6aa8e:4965125f-bd5c-418a-9f07-57f4ef108b11</guid><dc:creator>David Smarr</dc:creator><description>&lt;p&gt;Does anyone know how to make ProjectWise Automatically &amp;quot;Purge Local Copy&amp;quot; without having to do it every time I am finished with a document? Is this possible?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>Session File Manager Configuration</title><link>https://communities.bentley.com/products/administration/f/product-administration-forum/128305/session-file-manager-configuration</link><pubDate>Thu, 10 Nov 2016 21:51:08 GMT</pubDate><guid isPermaLink="false">6dad98f5-dbc9-4c4d-a9ba-e9da8dc6aa8e:8a6b74f5-f0f3-42ff-af44-105967ccc948</guid><dc:creator>Scott Turner</dc:creator><description>&lt;p&gt;Hello everyone,&lt;/p&gt;
&lt;p&gt;I am wanting to make changes to the data displayed in the Session File Manager in AutoCAD.&amp;nbsp; Currently the information shown&amp;nbsp;in&amp;nbsp;Reference View&amp;nbsp;is the file name, and I&amp;#39;d like to be able to configure this or better yet allow the users to select what is displayed from a metadata pick list similar to what you may see when building views.&lt;/p&gt;
&lt;p&gt;Has anyone else done this, or see this as valuable?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>i-model plug-in for Revit 2016 ?</title><link>https://communities.bentley.com/products/building/building_analysis___design/f/aecosim-speedikon-forum/115303/i-model-plug-in-for-revit-2016</link><pubDate>Thu, 21 Jan 2016 07:50:18 GMT</pubDate><guid isPermaLink="false">6dad98f5-dbc9-4c4d-a9ba-e9da8dc6aa8e:8ac2c073-1956-4ffc-a377-bf9597ca1faa</guid><dc:creator>Martin Rosendal</dc:creator><description>&lt;p&gt;Is there a i-model plugin voor Revit 2016?&lt;/p&gt;
&lt;p&gt;I looked at &lt;a href="https://store.bentley.com/en/products/iware/1000IMPR--i-model-plug-in-for-Revit"&gt;https://store.bentley.com/en/products/iware/1000IMPR--i-model-plug-in-for-Revit&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;but it is for revit 2010-2015.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>