D365 for Operations and Finance

PowerApps Formula reference for PowerApps

Formula reference for PowerApps

When building PowerApps I have found the below from Microsoft incredibly really helpful, an index of awesomeness for all things related to PowerApp formulas. I have lifted this from the Microsoft page but kept all the hyper links to allow you to drill into each piece of functionality.


Abs – Absolute value of a number.

Acceleration – Reads the acceleration sensor in your device.

Acos – Returns the arccosine of a number, in radians.

Acot – Returns the arccotangent of a number, in radians.

AddColumns – Returns a table with columns added.

And – Boolean logic AND. Returns true if all arguments are true. You can also use the && operator.

App – Returns information about the currently running app, such as which screen is currently displayed.

Asin – Returns the arcsine of a number, in radians.

Atan – Returns the arctangent of a number, in radians.

Atan2 – Returns the arctangent based on an (x,y) coordinate, in radians.

Average – Calculates the average of a table expression or a set of arguments.


Back – Displays the previous screen.

Blank – Returns a blank value that can be used to insert a NULL value in a data source.


Calendar – Retrieves information about the calendar for the current locale.

Char – Translates a character code into a string.

Clear – Deletes all data from a collection.

ClearCollect – Deletes all data from a collection and then adds a set of records.

Clock – Retrieves information about the clock for the current locale.

Coalesce – Replaces blank values while leaving non-blank values unchanged.

Collect – Creates a collection or adds data to a data source.

Color – Sets a property to a built-in color value.

ColorFade – Fades a color value.

ColorValue – Translates a CSS color name or a hex code to a color value.

Compass – Returns your compass heading.

Concat – Concatenates strings in a data source.

Concatenate – Concatenates strings.

Connection – Returns information about your network connection.

Count – Counts table records that contain numbers.

Cos – Returns the cosine of an angle specified in radians.

Cot – Returns the cotangent of an angle specified in radians.

CountA – Counts table records that aren’t empty.

CountIf – Counts table records that satisfy a condition.

CountRows – Counts table records.


DataSourceInfo – Provides information about a data source.

Date – Returns a date/time value, based on YearMonth, and Day values.

DateAdd – Adds days, months, quarters, or years to a date/time value.

DateDiff – Subtracts two date values, and shows the result in days, months, quarters, or years.

DateTimeValue – Converts a date and time string to a date/time value.

DateValue – Converts a date-only string to a date/time value.

Day – Retrieves the day portion of a date/time value.

Defaults – Returns the default values for a data source.

Degrees – Converts radians to degrees.

Disable – Disables a signal, such as Location for reading the GPS.

Distinct – Summarizes records of a table, removing duplicates.

Download – Downloads a file from the web to the local device.

DropColumns – Returns a table with one or more columns removed.


EditForm – Resets a form control for editing of an item.

Enable – Enables a signal, such as Location for reading the GPS.

EndsWith – Checks whether a text string ends with another text string.

Errors – Provides error information for previous changes to a data source.

EncodeUrl – Encodes special characters using URL encoding.

Exit – Exits the currently running app.

Exp – Returns e raised to a power.


Filter – Returns a filtered table based on one or more criteria.

Find – Checks whether one string appears within another and returns the location.

First – Returns the first record of a table.

FirstN – Returns the first set of records (N records) of a table.

ForAll – Calculates values and performs actions for all records of a table.


GroupBy – Returns a table with records grouped together.


HashTags – Extracts the hashtags (#strings) from a string.

Hour – Returns the hour portion of a date/time value.


If – Returns one value if a condition is true and another value if not.

IfError – Detects errors and provides an alternative value or takes action.

IsBlank – Checks for a blank value.

IsEmpty – Checks for an empty table.

IsMatch – Checks a string against a pattern. Regular expressions can be used.

IsNumeric – Checks for a numeric value.

IsToday – Checks whether a date/time value is sometime today.


Language – Returns the language tag of the current user.

Last – Returns the last record of a table.

LastN – Returns the last set of records (N records) of a table.

Launch – Launches a web address or an app.

Left – Returns the left-most portion of a string.

Len – Returns the length of a string.

Ln – Returns the natural log.

LoadData – Loads a collection from PowerApps private storage.

Location – Returns your location as a map coordinate by using the Global Positioning System (GPS) and other information.

LookUp – Looks up a single record in a table based on one or more criteria.

Lower – Converts letters in a string of text to all lowercase.


Max – Maximum value of a table expression or a set of arguments.

Mid – Returns the middle portion of a string.

Min – Minimum value of a table expression or a set of arguments.

Minute – Retrieves the minute portion of a date/time value.

Mod – Returns the remainder after a dividend is divided by a divisor.

Month – Retrieves the month portion of a date/time value.


Navigate – Changes which screen is displayed.

NewForm – Resets a form control for creation of an item.

Not – Boolean logic NOT. Returns true if its argument is false, and returns false if its argument is true. You can also use the ! operator.

Now – Returns the current date/time value.


Or – Boolean logic OR. Returns true if any of its arguments are true. You can also use the || operator.


Param – Provides access to parameters passed to the app when the user opened it.

Parent – Provides access to a container control’s properties.

Patch – Modifies or creates a record in a data source, or merges records outside of a data source.

Pi – Returns the number π.

PlainText – Removes HTML and XML tags from a string.

Power – Returns a number raised to a power. You can also use the ^ operator.

Proper – Converts the first letter of each word in a string to uppercase, and converts the rest to lowercase.


Radians – Converts degrees to radians.

Rand – Returns a pseudo-random number.

Refresh – Refreshes the records of a data source.

Remove – Removes one or more specific records from a data source.

RemoveIf – Removes records from a data source based on a condition.

RenameColumns – Renames columns of a table.

Replace – Replaces part of a string with another string, by starting position of the string.

Reset – Resets an input control to its default value, discarding any user changes.

ResetForm – Resets a form control for editing of an existing item.

Revert – Reloads and clears errors for the records of a data source.

RGBA – Returns a color value for a set of red, green, blue, and alpha components.

Right – Returns the right-most portion of a string.

Round – Rounds to the closest number.

RoundDown – Rounds down to the largest previous number.

RoundUp – Rounds up to the smallest next number.


SaveData – Saves a collection to PowerApps private storage.

Search – Finds records in a table that contain a string in one of their columns.

Second – Retrieves the second portion of a date/time value.

Set – Sets the value of a global variable.

ShowColumns – Returns a table with only selected columns.

ShowError – Displays an error message to the user.

Shuffle – Randomly reorders the records of a table.

Sin – Returns the sine of an angle specified in radians.

Sort – Returns a sorted table based on a formula.

SortByColumns – Returns a sorted table based on one or more columns.

Split – Splits a text string into a table of substrings.

Sqrt – Returns the square root of a number.

StartsWith – Checks if a text string begins with another text string.

StdevP – Returns the standard deviation of its arguments.

Substitute – Replaces part of a string with another string, by matching strings.

SubmitForm – Saves the item in a form control to the data source.

Sum – Calculates the sum of a table expression or a set of arguments.

Switch – Matches with a set of values and then evaluates a corresponding formula.


Table – Creates a temporary table.

Tan – Returns the tangent of an angle specified in radians.

Text – Formats a number as a string for display.

ThisItem – When in a gallery or form, returns the data for the current item from the container.

Time – Returns a date/time value, based on HourMinute, and Second values.

TimeValue – Converts a time-only string to a date/time value.

TimeZoneOffset – Returns the difference between UTC and the user’s local time in minutes.

Today – Returns the current date/time value.

Trim – Removes extra spaces from the ends and interior of a string of text.

TrimEnds – Removes extra spaces from the ends of a string of text only.


Ungroup – Removes a grouping.

Update – Replaces a record in a data source.

UpdateContext – Sets the value of one or more context variables of the current screen.

UpdateIf – Modifies a set of records in a data source based on a condition.

Upper – Converts letters in a string of text to all uppercase.

User – Returns information about the current user.


Validate – Checks whether the value of a single column or a complete record is valid for a data source.

Value – Converts a string to a number.

VarP – Returns the variance of its arguments.

ViewForm – Resets a form control for viewing of an existing item.


Weekday – Retrieves the weekday portion of a date/time value.


Year – Retrieves the year portion of a date/time value.


[Source: https://docs.microsoft.com/en-gb/powerapps/maker/canvas-apps/formula-reference]

PowerApps – Camera Integration Part 1

Part one of the ‘Those Dynamics Guys’ PowerApps Series.

As promised via Linked-In I am going to publish a series of Blogs on how to start using PowerApps. PowerApps is part of the Dynamics 365 stack that allows a user to create various application that connect with not only Dynamics 365 Data Sources but a prodigious plethora of others such as:

  • WordPress
  • SharePoint
  • Twitter
  • Skype For Business
  • Outlook
  • Bing Maps
  • Google Maps


Selecting a connection/data set:

This will then take you to the next step which is where you can either create a new connection and select a connector of your choice (this example would use Dynamics 365 for Finance and Operations – known as jsut Dynamics 365 for Operations in PowerApps) or if you have pre-existing connections available select the Dynamics 365 for Operations connector and choose an environment, preferably Test Environment that you have full System Administrative access too,  and select it as your data set.


Selecting a table:

Now we have our data source we need to let the system know which Data Entity we wish for it to use – for this example we are going to use ‘Projects’, use the search functionality to filter through the various DEs to find the correct one choose it and select “Connect”:

A ‘Building Your App’ process will kick off then you’ll be greeted by the PowerApps designer. Then we are ready to start throwing this beast together!


Navigation of the PowerApps Designer (an Introduction):

Please note the menu is dynamic in nature so options will disappear and reappear depending on what has been selected – the navigation shown here is when no items are selected and should be seen as an introductory overview.

  1. Home – the home area on the action pane allows the user to choose from a various array of formatting option (text size, text weight, Italics, borders, fill, pre-set themes etc.)
  2. Insert – Allows the user to insert various items such as; buttons, icons, various controls, input text, labels, data, media, charts etc.
  3. Action – this allows you to create certain actions for various items including; ‘Navigation’ (where you’d like a certain item (Icon, button etc.)) to take you to a certain screen within the app, ‘Collect’ allows the user to create collections (this will be covered later on in the article), ‘Flows’ allows to integrate a flow or the option to create a new one. There are other options but this is enough to start with.
  4. Screen – select images for the background of the screen, state positioning for background images and select various colours to fill the background with.
  5. New Screen (Home Tab) – this allows the user to insert a new screen and select from various options such as whethere you wish for a blank fixed screen, a scroll enabled screen etc.
  6. Tree View – this view displays a break-down structure of the selected screen. Which allows you to navigate around the design of your app.
  7. Thumbnail view – this view represents the screens via small thumbnail images. Which allows you to navigate around the design of your app.
  8. Tree View (break-down) – separates into various items that can be drilled into to focus on each item independently.
  9. Play Icon – this allows the user to preview the app in it’s current, unpublished, state – you can also push F5 as a shortcut.
  10. Properties – allows to set various options for the selected item such as formatting of the item itself, default values etc.
  11. Rules – this allows the user to apply a rule that modifies an app based on predetermined criteria on the item selected.
  12. Advanced- depending the item selected this is where the user can apply various commands (some of which we’ll address in this article) applied to data elements, action elements and design elements.

One final item is the ‘View’ tab which allows the user to view the ‘Data Sources’ being used by the application (create new connections, refresh connections and delete connections), view any media being used by the App, view collections and variables.


Presenting the ‘Projects’ DE in a more useful manner:

The first stage to build our camera app is to have the first browse screen render the data in a more useful manner. Currently it is browse screen with some values in my case the “Allow Negative Values To Be Carried Forward” value:

To achieve this select the main ‘Browse Gallery 1’ area – then select, from the ‘Properties’ area within the ‘Layout’ grouping “Title, Subtitle and body” this will bring up the data dialogue where was can start picking and choosing the data from the Projects Data Entity that we wish to expose onto the gallery.

To change what is shown in the gallery we can change the following data inputs for the labels:

  • Body1
  • Subtitle1
  • Title1

I am going to change the drop down for each one of these to the following values:

  • Body1 = DeliveryName
  • Subtitle1 = ProjectStage
  • Title1 = ProjectName

This will then populate the Gallery with the selected values (push F5 of the play icon to view the app in it’s current state).

Now we have presented the Gallery in a more readable manner we now have a basic app that will allows us to view projects, select a project to view further details on the selected project and even edit certain values and publish them back to Dynamics 365 for Finance & Operations.

We will come back to adding further fields to the project details area but for now let’s jump straight in to, what I deem, the more exciting part- building the camera functionality and storage.


Building the camera functionality:

Right now on to the awesome part let’s build a camera app! First stage is creating a new screen. To achieve this go Home>New Screen then select Scrollable Screen.

Insert a new screen:

Change a label value:

This will generate and insert a new screen into the viewing pane and the designer will take you to the newly inserted screen The first thing i’d like to do and familarise ourselves with is changing the label which in this case is the Title. It is possible to change the label text in three locations:

  • Formula bar (by selecting ‘Text’ from the list and put quotations “” around it)
  • Properties – within the ‘Text’ area
  • Direct – by typing into the label itself


The next stage is to insert the ‘Camera’ Control – to achieve this first select the ‘Add an item from the insert tab’ (this isn’t a necessity but is a quick and easy way to remove the text from the screen) from the ‘Insert’ tab on the action pane and select Media>Camera.

Insert Camera and capture images:

This will then insert the Camera:

Now we need to start a collection that allows us to capture a picture and store it (we will then look into passing the image through to SharePoint and email later on in this article series). First select the Camera and go to the ‘Advanced’ area- we are now going to put in an ‘OnSelect command’ this come be achieved in two ways:

  • Advanced – within the advanced area there is an OnSelect field.
  • Formula Bar – change the list to ‘OnSelect’.

Type in the ‘OnSelect’ field the following:      ClearCollect(CameraImage,Camera3.Photo)

  • ClearCollect means that it’ll only store one image in the collection at a time (remove ‘Clear’ to amass a large collection.
  • “CameraImage” is the name of the collection – rename this this to whatever you’d like the collection to be called.
  • “Camera3” is the name of the Camera item and “Photo” the media the collection is expected to capture.

Now whilst still in the screen that contains the Camera ‘Play’ (Push F5) the app – this will open the App in the screen that you are currently in – now click the area that contains the camera. This will engage the ‘OnSelect’ command which will engage the ‘Collection’ to grab a still image from the camera.

Now let’s view the image. Go to  View>Collections:

This will take you to the collections list where we can select ‘CameraImage’ (the name we chose as the collections name in the step above) and view the captured photo.

The next article will show us how to present the image under the camera (shown below), then we’ll move on to flows! Article 2 click here!






It is now possible to add alerts/notifications for events that have occurred within Dynamics 365 for Finance and Operations. This allows a user to create their own set of alerts to track various aspects of the environment that they wish to be alerted too.

In this example we are going to track when a Customer is deleted from the system. Below shows these steps:

Go to Accounts Receivable> Customers > All Customers then from the Action Pane ‘Options’ tab within the “Share” grouping select “Create Alert Rule”.

This will bring up a new dialog box, change the ‘Event’ to “Record has been deleted”

Then set the ‘Alert me for’ to “All records in customers” (rather than a specifically selected item), set ‘Alert me until’ to “No end date” and then ‘Alert me with’ insert a custom notification and who it should be sent too.


Now if a customer gets deleted you’ll know about it! Use the same principal on other tables within Dynamics 365 for Finance and Operations.

Create New Field – Personalisation

Previously I mentioned how Microsoft had ‘In Development’ on their RoadMap the ability to ‘Create New Field’ which would allow a user via Personalisation to insert a new field onto a table.

This has now been rolled out in the latest release of Dynamics 365 for Finance and Operations (8.0).

The example I am going to provide is adding an “Awesome Factor” on the Customer Table (Accounts Receivable> Customers > All Customers).

Start by Navigating to the All Customers Table and opening up the ‘Personalisation’ panel then selecting ‘Personalise This Form’ and selecting the Table as the main point of focus.

Select “+ Add a Field” then ‘Create new field’:

You’ll then be presented with a dialog pane like the one below, fill out the ‘Name Prefix’, ‘Type’, ‘Label’ and ‘Help Text’.

As I selected the ‘Type’ of “Picklist” I also had to populate the drop-down values.

After this simply select “Insert”, then commit the changes on the ‘Insert Fields’ pane:

Then simply refresh your browsers tab to see the changes and start adding some stats (Shown Below):

Please feel free to comment if you require further or more granular information.

“Action Required: …Rotate the SSL Certificates” – LCS Environment

So you’ve logged into your LCS, gone to the project where your environment sits and you are greeted with a beautiful array of red text:

First of all, don’t panic, your environment is fine – but now we are in the world of cloud computing we have to ensure that all things stay safe and secure and one part of this is regarding SSL certificates this allows data to be secured via small data files that digitally bind a cryptographic key…but enough of that – the big questions is… HOW DO I MAKE THE RED TEXT GO AWAY?


This is pretty simple, ensure that your environment is in a ‘Deployed’ status and open the ‘Environment Manager’ and select the ‘Maintain’ button then select “Rotate Secrets” – follow this process through – it’ll warn you about irreversible changes but don’t be afraid go for it!

This will then trigger the ‘Rotates Secret’ action.

There have been a few issues with this but it usually comes down to the environment or how old your environment is Microsoft are actively working on this and have also released this hands blog:


If you found this useful please do like the blog post!


Please note this blog is for discussion purposes only if you do use the information provided you do at your own risk.

Project Control & Analysis

I’ve been putting together a presentation around Microsoft Dynamics 365 for Finance and Operations snapshot report functionality related to Project Management & Accounting and thought i’d present a few of the various rapid bits of analysis you can do to see the health of a project.

Please note that all of these reports and queries are located within Project Management and Accounting>All Projects (Or My Projects) then select a project and go to the ‘Control’ tab in the Action Pane as shown below:


Cash flow:

This report allows the user to quickly see information relating to the cash inflows and outflows of the company, including where the cash is coming in from and what activities are creating the cash outflows.


Cost Control:

This statement allows the user to the monitor the costs that the organisation incurs during a project – it allows the viewer to compare the original budgeted costs with current total cost and allows the viewer to very quickly see any deviations from the budget on the ‘Deviation’ tab.


Tracking Views:

Tracking Views allows the user to compare the Effort and Cost that has been required to complete each activity within the Work Breakdown Structure against the planned cost by Toggling the ‘Effort Tracking/Cost Tracking’ button.

Invoice Control:

Invoice Control allows the user to see what total amount (divided into Transaction Type) is available to be invoiced (Total Invoicing), how much has been invoiced (Invoiced) and what is still remaining to be Invoiced (Chargeable) – it also show how much is non-chargeable and then the total of all.


Project statements:

Project Statements allow the user to see a quick snapshot view of the following:

  • General – General information about the basic profit and loss structure of the project.
  • Profit and loss – Information about accrued revenue.
  • WIP – Information about WIP account balances.
  • Consumption – Information about the consumption of hours, items, expenses, and payroll transactions.
  • Invoice – Information about invoices and on-account invoicing.
  • Hour rate – The hour rates for hours that are posted to revenue and cost accounts.

(By selecting each tab respectively)

Project Budget Balances:

This analysis/report allows the user to view the health of the budget by looking at the Budget itself against what has been consumed.

Unbudgeted Cost:

Unbudgeted costs is relatively self explanatory, it shows all the costs associated to the project that were not part of the Budget.


Advanced filtering and query syntax

Here is a quick copy and paste job from Microsoft’s documents site (https://docs.microsoft.com/) for reference to assist with advanced filtering and query syntax:

Advanced query syntax

Syntax Character description Description Example
value Equal to the value that is entered Type the value to find. Smith finds “Smith”.
!value (exclamation point) Not equal to the value that is entered Type an exclamation point and then the value to exclude. !Smith finds all values except “Smith”.
from-value..to-value(double period) Between the two values that are separated by double periods Type the from-value, then two periods, and then the to-value. 1..10 finds all values from 1 through 10. However, in a string field, A..C finds all values that start with “A” and “B”, and values that are exactly equal to “C”. For example, this query won’t find “Ca”. To find all values from “A” through “C“, type A..D.
..value (double period) Less than or equal to the value that is entered Type two periods and then the value. ..1000 finds any number that is less than or equal to 1000, such as “100”, “999.95”, and “1,000”.
value.. (double period) Greater than or equal to the value that is entered Type the value and then two periods. 1000.. finds any number that is greater than or equal to 1000, such as “1,000”, “1,000.01”, and “1,000,000”.
>value (greater than sign) Greater than the value that is entered Type a greater than sign (>) and then the value. >1000 finds any number that is greater than 1000, such as “1000.01”, “20,000”, and “1,000,000”.
<value (less than sign) Less than the value that is entered Type a less than sign (<) and then the value. <1000 finds any number that is less than 1000, such as “999.99”, “1”, and “-200”.
value* (asterisk) Starting from the value that is entered Type the starting value and then an asterisk (). S finds any string that starts with “S”, such as “Stockholm”, “Sydney”, and “San Francisco”.
value (asterisk) Ending with the value that is entered Type an asterisk and then the ending value. east finds any string that ends with “east”, such as “Northeast” and “Southeast”.
value (asterisk) Containing the value that is entered Type an asterisk, then a value, and then another asterisk. th finds any string that contains “th”, such as “Northeast” and “Southeast”.
? (question mark) Having one or more unknown characters Type a question mark at the position of the unknown character in the value. Sm?th finds “Smith” and “Smyth”.
value,value (comma) Matching the values that are separated by commas Type all your criteria, and separate them by using commas. A, D, F, G finds exactly “A”, “D”, “F”, and “G”. 10, 20, 30, 100 finds exactly “10, 20, 30, 100”.
(SQL statement) (SQL statement between parentheses) Matching a defined query Type a query as an SQL statement between parentheses. (data source.Fieldname != “A”)
T Today’s date Type T. T matches today’s date.
(methodName(parameters)) (SysQueryRangeUtilmethod between parentheses) Matching the value or range of values that are specified by the parameters of the SysQueryRangeUtilmethod Type a SysQueryRangeUtilmethod that has parameters that specify the value or range of values.
  1. Click Accounts receivable > Invoices > Open customer invoices.
  2. Press Ctrl+Shift+F3 to open the Inquiry page.
  3. On the Range tab, click Add.
  4. In the Table field, select Open customer transactions.
  5. In the Field field, select Due date.
  6. In the Criteriafield, enter (yearRange(-2,0)).
  7. Click OK. The list page is updated and lists the invoices that match the criterion that you entered. For this example, invoices that were due in the previous two years are listed.

See the table in the next section for additional details about SysQueryRangeUtildate methods, and several examples.

Advanced date queries that use SysQueryRangeUtil methods

Method Description Example
Day (_relativeDays=0) Find a date relative to the session date. Positive values indicate future dates, and negative values indicate past dates.
  • Tomorrow – Enter (Day(1)).
  • Today – Enter (Day(0)).
  • Yesterday – Enter (Day(-1)).
DayRange (_relativeDaysFrom=0, _relativeDaysTo=0) Find a range of dates relative to the session date. Positive values indicate future dates, and negative values indicate past dates.
  • Last 30 days – Enter (DayRange(-30,0)).
  • Previous 30 days and next 30 days – Enter (DayRange(-30,30)).
GreaterThanDate (_relativeDays=0) GreaterThanUtcDate (_relativeDays=0) Find all dates after the specified relative date.
  • More than 30 days from now – Enter (GreaterThanDate(30)).
GreaterThanUtcNow () Find all date/time entries after the current time.
  • All future date/times – Enter (GreaterThanUtcNow()).
LessThanDate (_relativeDays=0) LessThanUtcDate (_relativeDays=0) Find all dates before the specified relative date.
  • Less than seven days from now – Enter (LessThanDate(7)).
LessThanUtcNow () Find all date/time entries before the current time.
  • All past date/times – Enter (LessThanUtcNow()).
MonthRange (_relativeFrom=0, _relativeTo=0) Find a range of dates, based on months relative to the current month.
  • Previous two months – Enter (MonthRange(-2,0)).
  • Next three months – Enter (MonthRange(0,3)).
YearRange (_relativeFrom=0, _relativeTo=0) Find a range of dates, based on years relative to the current year.
  • Next year – Enter (YearRange(0, 1)).
  • Previous year – Enter (YearRange(-1,0)).

Delegate your Item Workflow Approval – HELP I’m GOING ON ANNUAL LEAVE


Finally the time has come, you’ve counted the days down, you’re going on Holiday – you can feel the golden sand in your toes and just about taste the cocktails on your lips. BUT, WAIT!!!!! Who’s going to approve the Time-sheets/Purchase Orders/Invoices/Expense/General Journals & more, ah yes my oppo at work will sort this for me – now how do I delegate?

Well this is easy, the article below will walk you through how to assign all your workflow approvals or particular ones to your colleagues.

Go to your ‘User Options’ by selecting the cog in the top right hand corner of the screen then selecting ‘User Options’:

Then select ‘Workflow’ from the navigation. From here you’ll be able to see your workflow notifications setup and the ‘Delegation’ configuration, BOOM you’ve struck gold! This is where you can setup who will approve all your items.

To set up the delegation, select ‘+Add’, now the first step is to select at which level:

  • All- all items are delegated to the selected worker
  • Module- select a module within Dynamics 365 for Operations for all associated workflows (please note these are still slightly segmented so read the description)
  • Workflow – select a specific workflow


Then select (under the ‘Delegate’ lookup) the Worker/colleague you wish to provide your approval times too.

Then set the start date/time and end date/time.

Now the last, but very important step is to make sure it’s ‘Enabled’:

The only thing to do now is to enjoy your annual leave (or training, sick leave or, or, or…)


Workflow – Email configuration from User Options to Batch Jobs.

So you’ve setup some workflow for Dynamics 365 for Operations and Finance, now you get asked – “Will I receive an email when I have to approve something?” The answer is “If you want(!?)”

This article will guide the user through the three necessary steps to setup Workflow email notifications (both on the User/Worker side of life and for the system to actually process through the notifications).

Step one is to make sure the User is setup to receive workflow emails. Check the Human Resource record (Human Resources>Workers>Workers) select the worker you wish to setup then expand the ‘Contact Information’ tab and enter an email address:

Once completed go to System Administration>Users>Users and select the corresponding User record (I am assuming the User and worker is already mapped – mainly as I am too lazy to write the instructions for it) then within the Action Pane select ‘User Options’:

Then select from the Navigation side bar ‘Account’ and select the correct ‘Email’ address and ‘Email Provider ID’ (bought in from your Email setup):

Then setup the ‘Workflow’ set the ‘Send notifications in email’ to yes and select how you wish the lines to be send:

  • Grouped – Notifications for line items are grouped into a single email message. Individual – An email message is sent for each line item.
  • If you want the user to receive notifications in the client, select the Send notifications in email check box.

Now the user is fully completed.

Step two, Make sure the Workflow Parameters are setup both in System Administration for global associated workflow (System Administration>Workflow>Workflow Parameters) and Organisation Administration for local associated workflows (Organization Administration>Workflow>Workflow Parameters).

From here setup (by drilling through) and select your email templates (please comment if you need further information on this setup).

Step three, now the batch job needs to be setup to pick up the notifications that need to be sent, then it needs to actually send them. This will be discussed below in ‘Systerm Configuration’

System configuration:

Setup email batch distributor (and the recurrence – can be a bit buggy so persist, persist as you would waiting in a long queue for an ice cold beer):

When the batch is up and running (not “Schedule date/time” – this is when it is meant to start, then you have the “Actual start date/time” when it processed through) :


View history to see how often this job has run to ensure it correlates with your re-occurrence setup:

View emails sent/waiting from:

This allows you to see which email notifications Dynamics has picked up and whether it is ‘Waiting’ or ‘Sent’- you can view the actual message from here too.

As always, if you do have any questions just throw me a comment below!



Security Diagnostics: Part Two

So, it’s happened, you’ve gone live after providing an awesome new Dynamics 365 for Finance and Operations system – Security Roles have been built and tested, everything is going smoothly and then you get an email from VSTS stating that a bug has been assigned to you. You open it and it’s concerning security – one of the users can not access a particular form/table etc. now you jump into Security Configuration in the System Administration module to guess which one they may need.


Microsoft has provided a great Security Diagnostics tool that is built in to just about every form and table. Open a form and go to the ‘Options’ tab within the Action Pane:

Select under the ‘Page Options’ grouping the “Security Diagnostics” options, this opens up a pop-up overlay window showing the various Roles, Duties and Privileges that have rights to the area you are browsing:

From here you can assign the Roles to Users, the Duties to Roles and Privileges to Duties, WINNING!

What’s in development and what’s new?

Well it is the season for giving and that means many of us will be receiving shiny new items we never knew we needed. Which got me thinking, usually a dangerous past time that ends in long hours at a pub, what new items will Microsoft be bestowing onto us in the coming months – the journey led me to the Microsoft Dynamics Road Map. So here are the 4 in development functional pieces that drew my eye:

  1. You’ve got a really amazing customer and you’d like to rate them out of 10 for awesomeness but you feel that the Change Request may be seen as a waste of time and not be approved by your line manager – well not to worry Microsoft has your back! They are currently working on the ability to provide ‘Super Users’ with the power of adding custom fields to a table and then placing that, via the personalisation functionality, onto a form with no need for a Technical-guru-extraordinaire getting involved! GLORIOUS!
  2. You’re going down the pub to see mates you have not seen for quite some time and you know the one thing they are sure to ask is “Hey Will, what are you doing with your life?” and then ensues the beautiful conversation of explaining Dynamics 365 in all its might, then their eyes glaze over. Instead why not provide a demo with data relevant to them – your mates will be sure to thank you for it! Microsoft are going to release their Contoso Demo Data in Data Entities and Data Package formats so you can easily import only the data you wish and can customise it easily before-hand, WINNING!
  3. Microsoft are finally starting to trust us! They will soon be adding extra ‘Self-Service’ features to the Life Cycle Services Portal to allow operations such as:
    1. Pushing gold configuration to production.
    2. Refreshing the sandbox with production data.
    3. Carrying out a ‘point-in-time’ restoration
  4. There is also word of a new ‘Export’ feature for users to export data from not just one legal entity but across many, if they so wish, in the form of ‘Export Projects’, if you wish to have the list of pending invoices from not just one entity but across all your different legal entities at a click of a button then you can – what a time to be alive!

Now all that has been mentioned so far is currently in development and will hopefully be pushed out in the coming months! However, there are some awesome items out now on Platform 11, one of the key items is…  they’ve given us our shortcuts back (select this blog to see them)!!!!!!