Correctly connect to an Excel file in a Canvas PowerApp

Now, just putting an Excel with some crude data in it won’t really be identified in the Canvas App you are making. Perhaps you’re missing something.

Let’s say, I want to read an Excel file from OneDrive For Business into my Canvas App, I select the Excel file from the OneDrive for Business connection like below –

excelToConnect

But, I’m treated with the below error while making a connection – CanvasAppExcel

 

Correcting your Excel

Well, if your Excel looks like this –

crudeExcel

Then, that’s the reason Canvas App is not able to connect to the data in the Excel. Here’s what you need to do – click on the top left corner of where your Table should start from and then click on Table from the Insert tab as shown below
convertToTable

Confirm that diagonal end of the Table you want to consider and click OK once confirmed
confirmSelection

Once you confirm, you’re Excel data will look like this which is correctly formatted into a Table –
formattedTable

 

Reading the Table

Now that you’re set, you should be able to read the Excel file’s Table which you can connect to.
tableAppeared

Hope this quick tip helps!!

 

Create a support Queue in Dynamics 365 CRM

I thought I should share my best practice of creating a quick Support Queue purely to receive Emails in Dynamics 365.

In my example below, the support email address is a User in Office 365 assigned any license that has Exchange Online service present. My example user needn’t have a Dynamics license for purely for the purpose of a Queue. Your application may vary.

Let’s take a look!

Support Queue Email

Now, typically a Support Queue’s Email is purely to track support requests raised over the email address provided. Typically, support@emailaddress.

  1. To start off, I’ll create a user in Office 365 called Support Queue and the login address I choose is support@cft146.onmicrosoft.com and assign only the license which is needed for the Queue i.e. any license having Exchange Online service in it, (E5 in my case) you may chose any other.
    licenseAssigned.png
  2. Then, I make sure my Mailbox is created in a few minutes post assigning the licence and then I’m good to go once I setup the Timezone and Language on the mailbox.
    mailboxReady.png

 

Create a Queue in D365 CE

  1. In D365 CE, directly head-over to create a Queue in D365. Assuming you are a System Admin, head over to Settings > Service Management and go to Queues. And then create a new Queue.
    queueInD365

    newQueue

  2. Enter the details as below, remember to keep the email address the same as the Exchange Email address for this user and click Save.
    createQueueDirectly.png
  3. Once you click Save, the Mailbox will be automatically created.
    SupportQueueMailBoxCreated.png
    That’s it. Now, let’s head towards enabling the mailbox for Server Side Sync.

Enable Server Side Sync on the Support Mailbox

To enable Mailbox, the Email address needs to be Approved by the Global Administrator of O365. [Your org could even be set to not requiring any Approval prior to enabling synchronization, you may need to ask you Admin for the same]. But assuming it’s required – approveEmail

Note that Incoming Email and Outgoing Email above is set to Server-side Synchronization or Email Router. [Incoming enabled is a must to receive emails in the system]. Click OK.
clickOKApprove

Once this is confirmed, see in the next step – the warning message disappears which is shown previously and you can now Test & Enable Mailbox for Server Side Sync. Now, click on Test & Enable Mailbox
test&Enable

Make sure that if you have multiple environments and you want to sync with only the current environment, check the option as below and then confirm.
confirm1EnvironmentOnly

Now, once the test is completed, you’ll be able to see the Success in the Active Mailboxes
enabledSuccessfully.png

 

Testing the Queue

Now, the Queue is ready to receive emails already. If you take look at the Queue, the test emails must have already come in by now.
QueueIsCorrect.png

Now, let’s say that a user has submitted an email to support@cft146.onmicrosoft.com [Your support email here 🙂 ], it will appear in the Queue as below
emailSent.png
itemReceived.png

And then you can continue to build your Queue use cases as per your requirements.

Hope this helps!

Create new Sandbox and copy Production over to it in PowerPlatform Admin Center

This is one of the standard approaches if you want to copy over a Production instance over to a Sandbox one. Most common scenarios being when you’ve on-boarded a new client to Dynamics 365 / PowerPlatform and you’re nearing Go Live for the first time!

You need a Sandbox to then follow new customization on the Sandbox and avoid doing anything on the Production. Here’s how you copy over from Production to Sandbox!

 

Creating a Sandbox

  1. Create a new Environment by clicking on the +New button as below
    newButton.png
  2. Now, you can directly create a new Sandbox environment in the PowerPlatform Admin Center (https://admin.powerplatform.microsoft.com/environments)
    Remember: Both the source and target environments need to be in the same region to copy.
    createSandbox.png
  3. Additionally, I’ve selected the Create a Database option too since I want to speed up the process.
    addingDatabase.png
    Note that you can chose which all apps you want to deploy if you chose Enable Dynamics 365 apps

And that’s it. You’ll need to wait for some time until this is processed!

If you’re also looking to create a Database explicitly for an existing environment using a previous method, you can check this post – Create new CDS Environment and Database quickly from PowerApps Admin Center

While this happens in the background, you can see the message on the Environments section on the Power Platform Admin Center
preparing.png

 

And upon completion, you’ll see the below message
completedCreation.png

Copying From Production to Sandbox

Next step is to copy over the Production to the newly created Sandbox environment.

  1. Select the Production environment you want to copy over and look at the ribbon, you’ll see a copy button.
    copyButton.png
  2. Once you click on the Copy, you’ll be asked about the target environment, chose the created Sandbox.
    selectTarget.png
  3. Once you confirm, the copying process will start. And you’ll be taken to this page which tells you what stage the process is in –
    currentProcess.png
  4. Once all the copying is completed, this notification will appear. Now, the next step is to turn off Administration Mode. Click on settings link as shown below by arrow.
    copySuccess.png
  5. Once you flick the switch and Save, Administration Mode will be disabled letting others to log in as well. Additionally, now we have the option to keep Background Operations On as well while keeping Administration Mode On as well.
    disableAdminMode.png

Now, you are all set. Hope this helps!

What is “Does not support untyped value in non-open type” ODataException in creating records in D365 CE?

One of the most common errors we come across while calling API to create records in Dynamics but isn’t clear what it means? One such issue is – “An error occurred while validating input parameters: Microsoft.OData.ODataException: Does not support untyped value in non-open type.

On the console of the browser, you’ll see this –
consoleLoggedError

But, if you open the <objectName>.responseText of the Failure message of the call, you’ll see the below –

originalErrorA more zoomed view of the error would be below –

badRequest

This is because of my typo in the code [Which is the case for most scenarios] where you mistype a name of the field and neither does the error itself doesn’t specify which field you’re missing out on nor what it means!

Reason

This is because of a simple typo  in one of the fields in the object I was creating using AJAX

faultLine

In my case, this should have been “entity.duration” and not “entity.durationn“.

It was a simple issue which led me wander troubleshooting in areas which I shouldn’t look into.

Hope this saves you some valuable time! Happy 365ing!

Secure Input/Output in Power Automate Run History

Isn’t it just too easy to see from Flow (Power Automate’s) Runs what data was passed on? A simple switch in the Power Automate designer will secure this.

Default Behavior

By default, if you have access to the Flow, you can simply go in and see the inputs
openData

Secure Input / Output

In the Flow designer, you can select and step and go to Settings
settings

And turn on Secure Input / Output depending on what you want. It says this is still in Preview as of the day of writing this post.
turnOnInputs.png

Once this is Active, it is denoted by a Lock symbol on the step you enabled it on.
denoted by Lock.png

And now, when you try to look at the data, it will hide away the information
securedData.png
Note: Please note that this will run only for the Run History records after this was turned on. The previous records will continue to show the data.

Also, in case you’re curious to know about the Approval Process using Power Automate, you can refer this post – Approval Process using Power Automate

Hope this helps!!

Approval Process using Power Automate

Approvals have been around for quite some time now in Power Automate. Let’s look at the simplest example of how we can make use of Approvals in Flow / Power Automate and then you let your imagination and creativity take over!

Scenario

For the sake of simplicity, I have a custom entity called Request where users submit a Request and the Approval simply has to Approve/Reject.
simpleRequestRecord.png

The Approved/Reject status should be set in Dynamics 365 accordingly. Simple!

Power Automate for Approval

And then, my Power Automate looks like this –

  1. I will trigger this off the CDS connector on create of the Request record and then select Approvals in the next step.
    approvalConnector
  2. The Type of Approval selection is asked.
    typeOfApprova
  3. And my Approval body is simple, just providing the basic details and whom the Approval request should go to. In this case, Kuldeep Gupta
    approvalBody.png
  4. In the next Condition step, based on whether the Outcome is Approve or not, I’ll simply update the record’s status to either Accepted or Rejected.
    condition.png
  5. If Yes, the following will execute
    Yes
  6. And if No, then the below
    No

That’s it. Let’s see it in action!

Approval Process

  1. Let’s say Priyesh has created a Request record in Dynamics
    simpleRequestRecord
  2. As I submit this request, an Email from Power Automate goes out to Kuldeep asking for approval. And right on the email itself, he can chose to Accept/Reject
    approvalReceived
  3. Let’s say the request was Accepted
    responseSubmitted.png
  4. The request will be Approved.
    approvedMessage.png
  5. And in Dynamics, the status of the record will be changed to Accepted as defined in the conditions.
    acceptedRecord.png

Hope this quick tutorial helps!

Update Price feature in D365 PSA v3

Typically, your costs for your clients go up by a certain percentage (%). It’s a standard practice to update the entire Price List consistently as and when there’s an increase.

This is a great feature to update the entire Price List by a defined % and then reflect this in the Estimates in your Project in PSA. Let’s take a look –

Scenario

Let’s say your original SalesPrice for a Developer role is $50
scenario1.png

And the same is reflected in the Estimates in a Project as well. Based on $50 for Developer i.e. resource Priyesh Wagh will spend 12 hours. So 12 * $50 for that week of 1st Dec is $600
originalSalesApplied.png

 

Updating Prices in Sales PriceList

Now, there’s an increase you want to apply. With just a simple change, you’ll be able to do so.

Assuming the PriceList in question here is SalesPriceListUS and you want to add a 10% increment to the same. Simply click on Update Prices button as shown below.
originalPrice.png
And specify the % of increment to be applied. Use Negative number to Decrease.
apply10
And there we go, a 10% to $50 is applied to all items as indicated.
scenario2

Update Price on Project’s Estimates

Similarly, to bring the change to the desired Project, look at the Estimates tab on the Project and click on Update Price button to effect the Prices on the table as well.
applyNew.png

And you’ll see the updated prices in Sales time-phase in the Project Estimates
updatedSalesApplied.png

Hope this helps!!

D365 General Tip: Keeping Currency and PriceList in check

In a hurry, you perhaps selected a similar looking Price List on your Quote and you want to change it.

Example: By mistake, I have selected “SalesPriceListINR” and want to select “SalesPriceListUS
salesINR

But when you try to do this, you can’t see the PriceList you want to set. Why is that?

visiblePLs

Currency

That’s because the Currency selected on the record is Rupee (₹) and your PriceList has the currency US Dollar ($)

rupeeSelected

Change it to US Dollar and you’ll see your PriceLists show up.
USDSelected.png
USDSet.png

And try searching your Price Lists again
correctPriceList

Error while changing PriceList

In a typical scenario, if you have child records dependent on the record you are changing, you’ll see this error.
typicalError.png

But as simple as the wordings are, you’ll need to do the needful and make sure there are no Currency dependent records associated.

 

Hope this helps!

 

 

Territories enabled for OOB Hierarchical relationship in Sales Hub

With the 2019’s Wave 2 Update releasing, the out-of-the-box Sales Territory entity has been enabled with Hierarchy settings.

Define Hierarchy

Let’s say you are in Sales Hub and in App Settings, look for Sales Territories on the left-hand menu.

menuNavi

settingMenu

It’ll show up all Territories, open the same and add a Parent territory
Let’s say, I opened Japan, I’ll add Asia-Pacific as the parent of the territory
addedParent

Once I do so, I can see the saved changes using the View Hierarchy button on the ribbon on either the Main Form on the public View.

Note: It won’t immediately appear once you enter a Parent and save, please reload the page.
viewHier.png

actualView.png

 

Please note that this is only for Unified Interface and not available for the classic UI. Also, this is only for the Sales Enterprise license.

Although the feature says it’s only available for Unified, I was able to catch it in classic UI as well. But this is discouraged since we are moving towards Unified UI and classic UI will soon be gone.

Hope this quick tip helps! 🙂

Set Lookups in Xrm.WebApi D365 v9 correctly. Solving ‘Undeclared Property’ error

Using Xrm.WebApi needs you to be careful with the field names and what to use when. Especially, when you are dealing with Lookups.

One of the most common errors you’ll come across is the one like below – “An undeclared property (fieldname you entered) which only has property annotations in the payload but no property value was found in the payload.

error

This is confusing as to what needs to be put in while setting the lookup.

If you have done the below, entered the name of the field which is all in small caps  –

object[“msdyn_resourcerequirement@odata.bind”] = “/msdyn_resourcerequirements(<Guid>)”;

This will result in the above error!!!

 

You’ll need to put the Schema name of the lookup field instead and this should solve your problem –

correctName.png

and the code should look like this –

object[“msdyn_ResourceRequirement@odata.bind”] = “/msdyn_resourcerequirements(<Guid>)”;

And this should totally work for you!!

Hope this helps! 🙂