Latest imported feed items on All about Dynamics 365 for Talent Latest imported feed items on All about Dynamics 365 for Talent https://thierrysdynamics365fortalent.com/ 2020-01-19T07:03:24+00:00 WP RSS Aggregator https://365community.online/resolved-workflow-elements-table-query-not-fetching-data?utm_source=rss&utm_medium=rss&utm_campaign=resolved-workflow-elements-table-query-not-fetching-data Resolved: Workflow Elements Table Query Not Fetching Data 2020-01-18T22:10:16.000+01:00 Workflow Elements tool created by Aiden Kaskela saves lot of time building complex workflows. And recently it’s source code was released on GitHub. Latest solution packages are available under “Release” tab on GitHub. One of the great feature I like about this tool is to Fetch the data using Fetch XML and post it on […] The post Resolved: Workflow Elements Table Query Not Fetching Data appeared first on 365 Community. Workflow Elements tool created by Aiden Kaskela saves lot of time building complex workflows. And recently it’s source code was released on GitHub. Latest solution packages are available under “Release” tab on GitHub.

One of the great feature I like about this tool is to Fetch the data using Fetch XML and post it on Send Email activity as an HTML Table. You can build complex Fetch XML, but…

Continue Reading Danish’s Article on their blog

Resolved: Workflow Elements Table Query Not Fetching Data

Workflow Elements tool created by Aiden Kaskela saves lot of time building complex workflows. And recently it’s source code was released on GitHub. Latest solution packages are available under “Release” tab on GitHub. One of the great feature I like about this tool is to Fetch the data using Fetch XML and post it on…

Blog Syndicated with Danish’s Permission

The post Resolved: Workflow Elements Table Query Not Fetching Data appeared first on 365 Community.

]]>
Danish Naglekar https://365community.online/feed/ dynamics365blogs
https://365community.online/unlock-bitlocker-protected-drive-with-powershell?utm_source=rss&utm_medium=rss&utm_campaign=unlock-bitlocker-protected-drive-with-powershell Unlock BitLocker protected drive with PowerShell 2020-01-18T17:58:27.000+01:00 I recently needed to unlock a HDD encrypted with BitLocker a number of times. I rapidly decided that entering the password manually every time was not something I wanted to do, so for that day, I needed a command line method of doing it. Fortunately, PowerShell has a commandlet available to do this: $SecureString = […] The post Unlock BitLocker protected drive with PowerShell appeared first on 365 Community. PowerShellI recently needed to unlock a HDD encrypted with BitLocker a number of times. I rapidly decided that entering the password manually every time was not something I wanted to do, so for that day, I needed a command line method of doing it. Fortunately, PowerShell has a commandlet available to do this:

$SecureString = ConvertTo-SecureString "{password}" -AsPlainText -Force
Unlock-BitLocker...

Continue Reading Ian Grieve’s Article on their blog

https://www.azurecurve.co.uk/2020/01/unlock-bitlocker-protected-drive-with-powershell/

Blog Syndicated with Ian Grieve’s Permission

The post Unlock BitLocker protected drive with PowerShell appeared first on 365 Community.

]]>
Ian Grieve https://365community.online/feed/ dynamics365blogs
https://365community.online/end-of-mainstream-support-for-microsoft-dynamics-nav-2015?utm_source=rss&utm_medium=rss&utm_campaign=end-of-mainstream-support-for-microsoft-dynamics-nav-2015 End of Mainstream support for Microsoft Dynamics NAV 2015 2020-01-18T15:48:31.000+01:00 January 14, 2020 marks the end of mainstream support for Microsoft Dynamics NAV 2015. We will not get any new regulatory features or hotfixes for this version anymore. Next end of mainstream support for: Microsoft Dynamics NAV 2016 : April 13, 2021 Migrate now to Microsoft Dynamics 365 Business Central! Retirement of the PartnerSource platform […] The post End of Mainstream support for Microsoft Dynamics NAV 2015 appeared first on 365 Community. January 14, 2020 marks the end of mainstream support for Microsoft Dynamics NAV 2015. We will not get any new regulatory features or hotfixes for this version anymore.

Next end of mainstream
support for:

  • Microsoft Dynamics NAV 2016 : April
    13, 2021

Migrate now to Microsoft Dynamics 365 Business Central!

Retirement of the PartnerSource platform

PartnerSource will be replaced by a central landing…

Continue Reading rstefanetti’s Article on their blog

End of Mainstream support for Microsoft Dynamics NAV 2015

Skip to content January 14, 2020 marks the end of mainstream support for Microsoft Dynamics NAV 2015. We will not get any new regulatory features or hotfixes for this version anymore. Next end of mainstream support for: Microsoft Dynamics NAV 2016 : April 13, 2021 Migrate now to Microsoft Dynamics 365 Business Central!

Blog Syndicated with rstefanetti’s Permission

The post End of Mainstream support for Microsoft Dynamics NAV 2015 appeared first on 365 Community.

]]>
Roberto Stefanetti https://365community.online/feed/ dynamics365blogs
https://community.dynamics.com/thread/377786?ContentTypeID=0 Workflow not available in Worker Courses in Talent. 2020-01-17T13:38:19.000+01:00 Hi, My Talent machine is not showing current legal entity's workflow, as it shows DAT environment workflows into legal entity of NMSA. Hi,

My Talent machine is not showing current legal entity's workflow, as it shows DAT environment workflows into legal entity of NMSA.

]]>
Adnan Mohiuddin Farooqui https://community.dynamics.com/365/talent/f/dynamics-365-for-talent-forum/rss Dynamics 365 Talent Forum
https://meganvwalker.com/retaining-line-breaks-in-multi-line-text-fields-from-forms-pro/ Retaining Line Breaks In Multi-Line Text Fields From Forms Pro 2020-01-14T10:00:00.000+01:00 So many good blog posts come about from questions asked by others in the community. Add in some collaboration, and the creative and inquisitive minds of others, and you’ve got yourself a nice work around to fix a slight annoyance. Al Eardley tagged me on Twitter with the following question. How can we prevent line... So many good blog posts come about from questions asked by others in the community. Add in some collaboration, and the creative and inquisitive minds of others, and you’ve got yourself a nice work around to fix a slight annoyance. Al Eardley tagged me on Twitter with the following question. How can we prevent line breaks from being stripped out of multi-line text fields populated in a Forms Pro survey response?

@MeganVWalker I am hoping that you might be able to help being the #Forms guru that you are: Whenever I use #PowerAutomate to save a multiline field to SharePoint it loses the line breaks. How can I retain the line breaks?

— Al Eardley @ #MSIgniteTheTour (@al_eardley) January 13, 2020

I HATE not knowing the answer to things, and to this I wasn’t sure, so of course I went off to investigate. Forms Pro doesn’t strip out the line breaks, so something else must be doing it. For Al, he noticed it was happening when sending in to a SharePoint list. For me, I saw it was happening when adding responses to an email using the Outlook connector.

If you haven’t ever read Ryan Maclean‘s blog, where have you been? I’m proud to call him a very good friend, but even if he wasn’t, I would still rave about his blog, it’s awesome! So check it out. Anyway, Ryan is the one who suggested and also provided the resolution so that the line breaks can be retained, I’ve just written about it below. All credit goes to Ryan! This will have so many uses, but in this scenario let us first start with our Forms Pro survey. We have a few questions on this survey, with First Name, Last Name, then the Net Promoter Score, and finally a reason for the score given. It’s question 4 that allows for multiple lines of text.

In this scenario we are going to populate a SharePoint list with the Forms Pro responses received. Make sure the multi-line text field you are going to populate has the option to ‘Use enhanced rich text’ set to Yes.

Next we need our Power Automate flow. Here is the first part. Our trigger is based on the create of a record (the Forms Pro survey response entity). Next we will get the related Survey entity. This allows us to create a Condition to check the name of the Survey and make sure it matches the one we are looking for. If you want it to run for every survey, you can leave out the 2nd & 3rd steps.

Next we need to add a step to get the response details if the survey is the correct one. Use the Microsoft Forms connector and the Get response details action. Pick the correct survey, then use the following expression in the Response id value.

int(triggerBody()?['msfp_sourceresponseidentifier'])

Now if we move on to our next action we can use the values from the survey response and populate the various fields.

However, this is where the issue lies. Even though the survey response provided for this question can have the text in multiple paragraphs, those are stripped out, leaving us with just a mass of text without the formatting.

What we need (and thanks again Ryan!) is a compose step to sort things out and make sure the line breaks are kept. Your expression will look something like this. This is the part that will need to be replaced with whatever question response you want to pass through: body(‘Get_response_details’)?[‘r1023da0d92764a5a8bafaea47bf08572’]

uricomponenttostring(replace(uriComponent(body('Get_response_details')?['r1023da0d92764a5a8bafaea47bf08572']), '%0A', '<br/>'))

Here is how Ryan broke it down for me:

uriComponent – converts the input to it’s URI Encoded representation.  In URI encoded, a Line Break is represented as %0A

replace – we’re replacing the %0A with <br> which is the HTML encoding for a line break

uriComponentToString – converts the URI encoded representation back to a string so we can use it

Now you can use the Output from that action above and populate your Multi-line Text field in your SharePoint list (or whatever you are trying to populate).

We can see now, a nicely formatted response is added to the corresponding field in the SharePoint list.

Want to just watch how to do this? Check out the video below:

]]>
Megan V. Walker https://meganvwalker.com/feed/ Megan V. Walker
https://changethework.com/label-b-corp/ Le label B-Corp : pour toutes les entreprises ? 2020-01-13T19:20:00.000+01:00 Depuis 2006, les entreprises peuvent être certifiées par le label B-Corp. L’obtention du label permet notamment aux entreprises de se voir attribuer des scores selon leur performance non pas économique, mais sociale et environnementale. Retour sur ce label et sur l’expérience de plusieurs entreprises qui l’ont obtenu. L’histoire du label B-Corp Le fondateur du label […] The post Le label B-Corp : pour toutes les entreprises ? appeared first on Change the work. Depuis 2006, les entreprises peuvent être certifiées par le label B-Corp. L’obtention du label permet notamment aux entreprises de se voir attribuer des scores selon leur performance non pas économique, mais sociale et environnementale. Retour sur ce label et sur l’expérience de plusieurs entreprises qui l’ont obtenu. L’histoire du label B-Corp Le fondateur du label […]

The post Le label B-Corp : pour toutes les entreprises ? appeared first on Change the work.

]]>
Aurélien Leleux https://changethework.com/rss ChangeTheWork
https://malindonosomartnes.com/2020/01/13/2020-everything-is-changing/ 2020 – Everything is changing 2020-01-13T09:41:00.000+01:00 It all died in 2019 As you might have seen Microsoft has announced the deprecation of Attract and Onboarding, they also announces that Talent is no more and that it’s now named Dynamics 365 Human Resources. I wrote the post Talent is dead – and it is good news. This is not the first time… Continue reading 2020 – Everything is changing It all died in 2019
Photo by Annie Spratt on Unsplash

As you might have seen Microsoft has announced the deprecation of Attract and Onboarding, they also announces that Talent is no more and that it’s now named Dynamics 365 Human Resources. I wrote the post Talent is dead – and it is good news.

This is not the first time they changed names on the HR application. When it first was released it was Dynamics 365 for Talent, they removed the “for” for all applications some time ago.

As a consequence of this – my blog that was malinsdynamics365fortalent.com this is now dead!

Out with the old – in with the new!

Photo by Johannes Plenio on Unsplash

If you look at the domain of this site, you can see that you are welcomed to my new blog: malindonosomartnes.com. My blog is now my full name, and that won’t change!

Dynamics 365 Human Resources

This blog will continue to post about the HR application from Microsoft, no matter what they call it and how many changes there will be!

  • You can be sure that I’ll post about all the new stuff coming in Wave 1 (April) and 2 (October)
  • You can be sure that I’ll post about the new certification when it comes (after I pass it myself!)
  • You can be sure that I’ll post about everything I find interesting and learn about the HR application

Dynamics 365 Marketing

From 2020 I’ll also start posting about Dynamics 365 Marketing and my own route to learning this application. I’ve always loved marketing, have a degree in marketing and have used ClickDimensions since 2014, but now I need to start learning the new application from Microsoft and I’d like to have you along for the journey!

Hope you have learned a lot so far, and I hope you’ll stick around for more information about Dynamics 365 Human Resources and Dynamics 365 Marketing.

]]>
Malin Donoso Martnes https://malinsdynamics365fortalent.com/feed malinsdynamics365fortalent.com
https://powerapps.microsoft.com/fr-fr/blog/update-to-the-power-platform-center-of-excellence-starter-kit/ Update to the Power Platform Center of Excellence Starter Kit 2020-01-13T07:15:00.000+01:00 Announcing Updates to the Center of Excellence (CoE) Starter Kit – a set of templates that are designed to help get started with developing a strategy for adopting and supporting the Power Platform, with a focus on Power Apps and Power Automate. Announcing Updates to the Center of Excellence (CoE) Starter Kit – a set of templates that are designed to help get started with developing a strategy for adopting and supporting the Power Platform, with a focus on Power Apps and Power Automate.

]]>
https://powerapps.microsoft.com/fr-fr/blog/feed powerapps.microsoft.com
https://powerapps.microsoft.com/fr-fr/blog/jan-17-webinar-integrating-bot-framework-skills-with-power-virtual-agents/ Jan 17 Webinar: Integrating Bot Framework Skills with Power Virtual Agents 2020-01-11T17:07:31.000+01:00 We are excited to announce that the modular and reusable conversation Bot Framework skills can be integrated with Power Virtual Agents.  January 17th 12:00pm PST Senior Program’s Pawan Taparia and Managers Murali Kumanduri from the Power Virtual Agents team will be hosting a live webinar to walk through what Bot Framework Skills are, how to integrate Bot Framework Skills with Power Virtual Agents and what was just updated with SDK version 4.7 launch. We are excited to announce that the modular and reusable conversation Bot Framework skills can be integrated with Power Virtual Agents.  January 17th 12:00pm PST Senior Program’s Pawan Taparia and Managers Murali Kumanduri from the Power Virtual Agents team will be hosting a live webinar to walk through what Bot Framework Skills are, how to integrate Bot Framework Skills with Power Virtual Agents and what was just updated with SDK version 4.7 launch.

]]>
https://powerapps.microsoft.com/fr-fr/blog/feed powerapps.microsoft.com
https://meganvwalker.com/four-ways-to-learn-forms-pro/ Four Ways To Learn Forms Pro 2020-01-07T10:15:00.000+01:00 It’s 2020 and no doubt you feel like you’ve never been away from work, straight back into it! Hopefully, you had some time off at the end of the year, and maybe even took some of it to think about your plans and goals for the coming 12 months. For me, one of the things... It’s 2020 and no doubt you feel like you’ve never been away from work, straight back into it! Hopefully, you had some time off at the end of the year, and maybe even took some of it to think about your plans and goals for the coming 12 months. For me, one of the things I am most passionate about is training, going back to how I first got into working with software well over a decade ago. I’m excited about some new ways I can share knowledge and information about Microsoft Forms Pro.

1. Blogs & Videos

Since July 2017 I have provided at least one blog post each week, adding in videos in 2019. I will always continue to do this, it’s what I love about this community. The ability to share ideas and provide education for our peers is a powerful thing, one could even call it a Power Platform 😉

2. Online Course

So, there will always be the free stuff, but sometimes you just want all of the information all at once, and in a clear, guided instructional format. Enter my new Forms Pro course which you can find here. I’m offering a new year discount throughout the month of January. If you are interested, use coupon code PRO2020 to get 20% off the cost of the course. There are 85 lessons across 10 different sections with each video, quiz, and chapter designed to help you gain a full and comprehensive understanding of this powerful survey tool. A by-product of attending this course is a greater understanding of Microsoft Power Automate as we use triggers and actions based on data within your Common Data Service environment.

3. Scottish Summit Special!

Next, if you haven’t heard about Scottish Summit, on Saturday, February 29th, 2020, where have you been? In addition to the main event, there are pre-day events happening on Thursday and Friday. Friday is a series of hackathons, and Thursday includes classroom training from myself and other MVPs. I will be teaching a one day course on Forms Pro. You can register to attend here. In addition, attending this event will also give you free access to my online course above, giving you even more information and training materials.

4. UK Classroom Training

Finally, if you can’t make it to Glasgow for Scottish Summit, but still would like to attend an in-person training course, I will be teaching several times throughout the coming months. I’ve teamed up with fellow MVP Feridun Kadir and will be at his training facilities to teach. You can check out the entire schedule here. I will be teaching my Forms Pro course with one and two day options, and also have an SSRS/FetchXML Report Writing class for those interested in writing their own reports (because Power BI is NOT always the right option! 😊).

I hope to see you in class either online in my course, or at one of the classroom training events over the next few months. Happy learning!

]]>
Megan V. Walker https://meganvwalker.com/feed/ Megan V. Walker
https://readyxrm.blog/2019/12/28/trigger-power-automate-flows-from-power-apps-portals/ Trigger Power Automate flows from Power Apps Portals 2019-12-28T23:41:01.000+01:00 Currently the only way to update records from a Power Apps Portals is to create or update data via an Entity Form, Web Form or a companion app. The companion app incurs a certain level of technical debt in terms of development of the app and management of where its hosted, such as an Azure… Continue reading Trigger Power Automate flows from Power Apps Portals Currently the only way to update records from a Power Apps Portals is to create or update data via an Entity Form, Web Form or a companion app. The companion app incurs a certain level of technical debt in terms of development of the app and management of where its hosted, such as an Azure web app or Azure function.

Power Automate to the Rescue!

The following post outlines the steps I took to trigger a Power Automate flow from a portal web page that will update a record in CDS (common data service) without needing to submit a form or navigating away from the page. Power Automate effectively acts as the Power Apps Portals “companion app”.

Note: Unless you have been living under a rock, Power Automate is the new official name for Microsoft Flow.

Note 2: These steps would work with Power Apps Portals running on Dynamics 365 instances (which, as you know, run on CDS). If I say “CDS”, Dynamics 365 could also apply.

Power Apps Portals Editable Grid

I wanted to build a simple editable grid on a Power Apps Portals page where a portal user could update a series of records without needing to open an entity form or a web form step for each record.

I started to build a custom web template. (Sample code can be found on my Github Site.)

My example will list a series of courses and allow the portal user to update the description for each course without submitting a form. It might not be the most relevant use case, but hopefully will illustrate the process.

The first step was to retrieve the course data which I would want to edit. For this I use the Liquid FetchXML tag to retrieve the data, and of course I composed the FetchXML statement using the FetchXML Builder.

{% fetchxml courses %}

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct='true' returntotalrecordcount='true'>
    <entity name="avngr_course" >
        <attribute name="avngr_coursedescription" />
        <attribute name="avngr_coursename" />
        <attribute name="avngr_courselevel" />
        <attribute name="avngr_cost" />
        <attribute name="avngr_courseid" />
    </entity>
</fetch>

{% endfetchxml %}

In the web template, if data is retrieved, I want to display the data in a fairly simple list. As a bonus, since the text could be quite lengthy, I decided to hide the description in an “accordion style” so the user could open and collapse each record. This part is completely optional.

<!-- assuming data is retrieved -->
{% if courses.results.total_record_count > 0 %}

    <!-- for each course retrieve, show the name as the accordion section and description in text area to be edited -->
    <!-- use the GUID as the id for the textarea control to retrieve later -->
    <!-- pass the GUID to the JavaScript function to update record -->
    {% for course in courses.results.entities %}

        <button class="accordion">{{course.avngr_coursename}}</button>
        <div class="panel">
            <textarea id={{course.Id}} rows="4" cols="50">{{course.avngr_coursedescription}}</textarea>
            <button onclick="updaterecord('{{course.Id}}')">Update</button>
        </div>

    {% endfor %}

{% else %}

    <h2>No records found.</h2>

{% endif %}

If you look at the code, I set the description value in a HTML textarea element, so it can be edited on a portal page.

I set the textarea HTML tag id to the GUID of the record from CDS, this gives each textarea control a unique id (which will need later).

The course name, I just set as the accordion button name.

Within the panel, I also added a button item, that will pass the GUID to a JavaScript function that I will create as part of the web template.

The result looks like the following on a Power Apps Portal page:

The problem now is how to pass the user edits to update the corresponding CDS/Dynamics 365 record. Traditionally, we could write a “companion” web application that we could call from JavaScript and pass along the updates.

I decided to try to use Power Automate.

Power Automate provides a HTTPS Request trigger that we can call from a Power Apps Portal (or other places).

Power Automate HTTP Request Trigger

This trigger requires a JSON (JavaScript Object Notation) string in order to be configured and it will accept data in a JSON string. We can begin to build out our web template further to get a sample JSON string.

We will start to build our JSON string in the JavaScript function that we will call from our “Update” button that we place beside each record.

I add JavaScript code in my web template records between <script> tags to keep everything together. See the sample code for the full example.

Since we used the actual record GUID as the textarea id and passed the id to the function, we have what we need to start building our JSON string.

NOTE: If there are more than one field to edit, we could concatenate addition id information to each HTML element to remain unique, e.g. “id=textarea1{{course.Id}}”

var courseupdate = '{ "course" : [' +
        '{ "courseid": "' + id +'", "coursedetail": "' + document.getElementById(id).value.trim() + '"} ]}';

The will produce a JSON string similar to the following (you can add an “alert” function to get your sample):

{ "course" : [{ "courseid": "42e86bd1-e704-ea11-a811-000d3af962ef", "coursedetail": "This is an introductory course for AI Builder"} ]}

Once you have your sample, you can use that as a pattern for the Power Automate Http Request trigger by clicking the “Generate from sample” button;

Generate JSON Schema from sample
Adding JSON schema

The next step is to take the data collected from the HTTP request trigger and update CDS. In Power Automate, I used the Common Data Service (current environment) Update a record connector to update the Course record in the CDS environment.

Update a record (CDS current environment)

We have the “course id” and “course description” from our HTTP request trigger in our Power Automate flow. We can use these values to directly update a record in CDS/Dynamics 365.

Update the record with values from the HTTP Request

Once we save the flow, it will create the HTTP POST URL that we will use to call from our Power Apps Portal page.

Copying the HTTP POST URL

You could use a tool like Postman to test the Power Automate flow to ensure that the JSON string will update a CDS/Dynamics 365 record.

The final step to get the process functional is the add the code to the JavaScript function in the portal web template to submit the JSON string to Power Automate to update the record in CDS/Dynamics 365. This will use the XMLHttpRequest function.

//Update record by calling HTTP request Power Automate flow
function updaterecord(id) {
            
        //build JSON string using values from display
        var courseupdate = '{ "course" : [' +
        '{ "courseid": "' + id +'", "coursedetail": "' + document.getElementById(id).value.trim() + '"} ]}';

        //use the alert to get JSON example for flow
        //alert(courseupdate);

        //build http request string using URL from Power Automate flow
        var req = new XMLHttpRequest();
        var url = "https://<<copy HTTP POST URL from Power Automate here>>";

        //send https request to Power Automate
        req.open("POST", url, true);
        req.setRequestHeader('Content-Type', 'application/json');
        req.send(courseupdate);

        alert("updated");

    }

Navigating to our Power Apps Portal page, we can edit some of the text displayed on the record, and then click “Update”.

Update data directly on portal page

If we look at the data in CDS (in this case, from a Model Driven App) we see that the data was updated.

Data updated in CDS Model Driven App

Security

Security concerns

If someone were malicious, they could locate the HTTP POST URL from the browser session and build an app (or use a tool like Postman) to update data directly to your CDS without using the portal (where the pages could be protected by authentication).

Hitting F12 and taking a peek at the data being transmitted

There are likely better ways to protect the function, but a simple way is to add a condition area in your Power Automate flow to check the origin of the Http request. (Using the expression triggerOutputs()[‘headers’][‘origin’] to get origin value from header of HTTP request).

Did request come from a Power Apps Portal?

The process can be set to check the origin of the request, if it doesn’t come from the Power Apps Portals URL, then terminate the request.

The final flow for this experiment looks like the following:

Full Flow

The sample code on Github is the complete Web Template. In the Portal Management app, create a new Web Template and simply copy and fix up the code for your situation. Then create a corresponding Page Template record that points to the Web Template.

Creating Web Template

The Page Template will now be available for use in the Portal design studio. Also note that the user (or anonymous web role) will need appropriate Entity Permissions configured to actually view the data.

The sample code also contains the CSS and JavaScript for the “accordion” styling. This code was pretty much lifted verbatim from https://www.w3schools.com

Gotchas

If the Portal is high transaction, high volume, then it could potentially eat up flow allocations quickly. I could see the use cases working well for very low volume portals.

Even with checking the origin, there are other potential security concerns that would need to be addressed with this method.

In order to see the updates reflected (accurately) on the portal, a user would need to navigate away or refresh the web page where they are viewing the edited data. The CDS records should be configured with change tracking enabled to ensure the most up to date data is visible on the portal.

At this point, the code does not have a listener enabled to determine of the flow was successful or not updating the data in CDS.

Another method would be to have a single update button that would build a JSON string from all the updates. However, this could exceed limits of how much data can be passed to the HTTP request.

Summary

This example showed an simple example of how Power Automate could be used with a Power Apps Portal. There are other applications beyond creating or updating data where triggering a flow could be beneficial. Power Apps Portals do have the ability to run “classic” Dynamics 365 workflows from entity forms and entity lists. The sample provided here provides an option to run processes via Power Automate.

Cover Photo by Gordon Williams on Unsplash

Security Photo by Scott Webb on Unsplash

Nick Doelman is a Business Application MVP, a Microsoft Certified Trainer and the host of Refresh the Cache: the Power Apps Portals Podcast. Nick will be delivering the Power Apps Portals in a Day class at Scottish Summit 2020. Follow Nick on twitter @readyxrm

Appendix A – Full Web Template Code

{% extends 'Layout 1 Column' %}
{% block main %}

<!--Web Template to display a list of records, allow user to update course detail and update via Power Automate Http request-->
<!--Nick Doelman-->
<!--December 27, 2019-->

<!-- CSS style for accordion panel -->
<!-- code source: https://www.w3schools.com/ -->

<style>
/* Style the buttons that are used to open and close the accordion panel */
.accordion {
    background-color: #eee;
    color: #444;
    cursor: pointer;
    padding: 18px;
    width: 100%;
    text-align: left;
    border: none;
    outline: none;
    transition: 0.4s;
}

/* Add a background color to the button if it is clicked on (add the .active class with JS), and when you move the mouse over it (hover) */
.active, .accordion:hover {
    background-color: #ccc;
}

/* Style the accordion panel. Note: hidden by default */
.panel {
    padding: 0 18px;
    background-color: white;
    display: none;
    overflow: hidden;
}

</style>
{% fetchxml courses %}

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct='true' returntotalrecordcount='true'>
    <entity name="avngr_course" >
        <attribute name="avngr_coursedescription" />
        <attribute name="avngr_coursename" />
        <attribute name="avngr_courselevel" />
        <attribute name="avngr_cost" />
        <attribute name="avngr_courseid" />
    </entity>
</fetch>

{% endfetchxml %}

<!-- assuming data is retrieved -->
{% if courses.results.total_record_count > 0 %}

    <!-- for each course retrieve, show the name as the accordion section and description in text area to be edited -->
    <!-- use the GUID as the id for the textarea control to retrieve later -->
    <!-- pass the GUID to the JavaScript function to update record -->
    {% for course in courses.results.entities %}

        <button class="accordion">{{course.avngr_coursename}}</button>
        <div class="panel">
            <textarea id={{course.Id}} rows="4" cols="50">{{course.avngr_coursedescription}}</textarea>
            <button onclick="updaterecord('{{course.Id}}')">Update</button>
        </div>

    {% endfor %}

{% else %}

    <h2>No records found.</h2>

{% endif %}

<script>

    //Accordion display as per https://www.w3schools.com/
    var acc = document.getElementsByClassName("accordion");
    var i;

    for (i = 0; i < acc.length; i++) {
        acc[i].addEventListener("click", function() {
        /* Toggle between adding and removing the "active" class, to highlight the button that controls the panel */
        this.classList.toggle("active");

        /* Toggle between hiding and showing the active panel */
        var panel = this.nextElementSibling;
        if (panel.style.display === "block") {
            panel.style.display = "none";
        } 
        else {
            panel.style.display = "block";
            }
        });
    }

    //Update record by calling HTTP request Power Automate flow
     function updaterecord(id) {
        //alert("Update record: " + id);
        //alert("Update text: " + document.getElementById(id).value.trim());

        //build JSON string using values from display
        var courseupdate = '{ "course" : [' +
        '{ "courseid": "' + id +'", "coursedetail": "' + document.getElementById(id).value.trim() + '"} ]}';

        //alert(courseupdate);

        //build http request string using URL from Power Automate flow
        var req = new XMLHttpRequest();
        var url = "<<HTTP POST URL HERE>>";

        //send https request to Power Automate
        req.open("POST", url, true);
        req.setRequestHeader('Content-Type', 'application/json');
        req.send(courseupdate);

        alert("updated");

    }



</script>
{% endblock %}

]]>
Nick Doelman https://readyxrm.blog/rss ReadyXRM
https://malindonosomartnes.com/2019/12/18/mvp-advent-calendar/ MVP Advent calendar 2019-12-18T09:41:01.000+01:00 Today on the 18th of December I’m part of the MVP Advent Calendar (website / Twitter) from the fantastic Megan V Walker (Twitter / LinkedIn). What is the price from me? Well, you’ll have to go to the website to find out and sign up! There are still some days you can join and you… Continue reading MVP Advent calendar Today on the 18th of December I’m part of the MVP Advent Calendar (website / Twitter) from the fantastic Megan V Walker (Twitter / LinkedIn).

What is the price from me? Well, you’ll have to go to the website to find out and sign up!

Day 18 is upon us, which means yet another MVP behind a door on the MVP Advent Calendar, just waiting to give away a gift. Who is it? Check out the video to see, then go open the door! #MVPAdvent #PowerPlatform https://t.co/TrNfDkG6XK pic.twitter.com/NfpG9Z2xVI

— MVP Advent Calendar (@MVP_Advent) December 18, 2019

There are still some days you can join and you can also go back an see all the other cool gifts that MVP’s have contributed with.

]]>
Malin Donoso Martnes https://malinsdynamics365fortalent.com/feed malinsdynamics365fortalent.com
https://www.tomstalentblog.co.uk/2019/11/19/changing-how-leave-balances-display-in-ess/ Changing how leave balances display in ESS 2019-11-19T17:57:34.000+01:00 Every so often working with Talent I’ll stumble on a parameter that either I haven’t noticed before, or that’s been recently added. I had that experience today with a drop down under Human resource parameters > Leave and absence. It was marked ‘Balance calculation’ and seemed to have defaulted to ‘Balance as of today’. The… Read More » The post Changing how leave balances display in ESS appeared first on Tom's Talent Blog. Every so often working with Talent I’ll stumble on a parameter that either I haven’t noticed before, or that’s been recently added. I had that experience today with a drop down under Human resource parameters > Leave and absence. It was marked ‘Balance calculation’ and seemed to have defaulted to ‘Balance as of today’. The alternative option was ‘Balance as of accrual period’.

Balance calculation parameter

I’ve been back through about six months of release notes, but I couldn’t see exactly when this parameter was added. It’s quite possible that it’s been there ages and I’ve just never noticed it. But I thought I’d have a little play to see what it did.

I’ve got a test user with Employee roles in my latest trial environment, and they’ve got an approved, future dated leave request that sits within the current leave period. When they go to self service, there’s a tile marked ‘time off balances’. When the balance calculation parameter is set to ‘Balance as of today’, their leave balance doesn’t reflect requests which have been approved, but which are in the future.

Time off balance

When I switch the parameter over to the ‘Balance as of accrual period’ though, the balance now seems to reflect the end of the accrual period, as it now includes leave which I’ve requested and had approved but not yet taken.

It also seems to affect the balances tile found in the People workspace:

People hub balance tile

Nice little feature this – there seems to be no problem in toggling between the two options even once there has been leave booked (unlike the switch between booking leave in hours or days). Has anyone found anywhere else that it has impact?

 

The post Changing how leave balances display in ESS appeared first on Tom's Talent Blog.

]]>
Tom http://www.tomstalentblog.co.uk/feed Tom's Talent Blog
https://www.tomstalentblog.co.uk/2019/11/11/copying-a-talent-core-hr-environment/ Copying a Talent Core HR environment 2019-11-11T22:48:02.000+01:00 Praise be to Elvis (and certain lovely people in the Talent product team who shall remain nameless), the feature we’ve all been asking for since July 2017 is here… You can now copy a Talent Core HR environment. There’s been some confusion around this for a while now. So let’s take a little bit of… Read More » The post Copying a Talent Core HR environment appeared first on Tom's Talent Blog. Praise be to Elvis (and certain lovely people in the Talent product team who shall remain nameless), the feature we’ve all been asking for since July 2017 is here… You can now copy a Talent Core HR environment.

There’s been some confusion around this for a while now. So let’s take a little bit of time to clear things up. Since October 2018 (ish) we’ve had the facility to copy a CDS environment. That meant that to some extent, you could replicate some of your Talent data from one environment to another. But those of you who’ve followed this blog or worked with Talent for a while will recognise the key shortcoming of this feature – not all the data that currently exists within the Talent Core database (which some of the dinosaurs among us know as the AX database – lovingly abbreviated to AXDB) is being synced to the Common Data Service. So yes, you could copy a CDS environment, but a significant proportion of the setup you’d done in the AXDB would be missing.

Now however all that has changed – and it’s possible to copy the Core HR database or AXDB from one environment to another. This change is being rolled out in an LCS update today – and I’m already seeing it in all the LCS environments I work within.

Right. Let’s go a bit deeper.

There are some controls around where you can do this – mostly consistent with Microsoft’s environment management strategy. Let’s consider what those are before we get stuck in to how you actually do this.

  • You can only copy a Production environment into a Sandbox environment, you can’t go the other way around. That means you can use Production data to create a mirrored Test environment, but you can’t use the environment copy to ‘promote’ config from a Sandbox to Production.
  • You can copy between Sandbox environments.
  • The environments you copy between must be located in the same region (can’t think of any legitimate reason why your Test and Prod environments would be in a different region, but I’m sure some will have tried it either accidentally or on purpose)
  • You can copy between LCS projects, but not between tenants.

Also – there are some key things you need to bear in mind:

  • All the data in your target database (the one you’re copying INTO) will be erased and can’t be recovered. Seems obvious, but worth stating clearly.
  • The environment you’re copying into can’t be used until the copy has completed. Also obvious.
  • All users except the Sys Admin users and service accounts are disabled in the newly minted environment, so that the admin users can anonymise data before releasing it to the world.
  • Again seemingly obvious but for some reason this caught me unawares – the newly copied target environment will inherit the user options from the source environment. I always set my Prod environment to red and my Test environment to green. After the copy my Test environment went red. I was very confused and spent ten minutes checking URLs (which by the way don’t change) to make sure I was in fact in my Test environment, before I could change the colours again.
  • Documents and templates in Azure blob storage don’t get copied.
  • The admin user will need to reconfigure any integrations – it can’t be assumed they’ll still work/be pointing at the right environment.

Ok, so how do you actually do it?

If you want to create a like for like replica, you complete the copy in two stages. First you copy the Core HR database (or AXDB), and then you copy the PowerApps environment.

Copying the Core HR database:

Log in to LCS

Navigate to the Talent project which contains your source environment (that is, the data you want to copy)

Hit the ‘Talent app management’ tile on the right hand side

Screenshot of app management tile

Select the source environment, and hit the ‘copy’ button

Screenshot of copy button in LCS

A slider will pop out asking you to identify your target environment. If you don’t see your target environment listed, check that it is a Sandbox instance (remember you can only copy into a Sandbox instance, not a Production one). If your Target environment is old (as mine was) and was created before Talent Sandboxes were a thing, raise a call with Microsoft to have it switched to Sandbox. You can’t do it yourself unfortunately.

Copy slider screenshot

Once you’ve got everything in place, pick the target environment from the list and hit continue.

When the job’s done, you’re supposed to get a message in the pop out slider saying that the job has completed. I didn’t – it just went blank. But the status in the app management grid changed from ‘in progress’ back to ‘deployed’.

There’s no progress indicator yet – and how long the process takes will vary according to how much data is being copied. In an environment with about 100 workers in it, the process took less than 15 minutes.

When the Core HR environment has successfully copied, you can copy your Power Apps environment too. That’s already well documented as you’ve been able to do it for a while, so I’ll just provide this link out to Microsoft’s guide.

After your Power Apps environment has also copied successfully, you need to re-enable the sync between Talent Core HR (the good old AXDB) and the CDS. It gets disabled as part of the copy process and you have to switch it back on. To do so, go to System administration > Links > Integrations > Common Data Service configuration, and make sure ‘Enable the integration’ is set to ‘Yes’.

CDS integration screenshot

Finally, you’re going to want to review your user accounts and re-enable the users who have legitimate access to the environment. Remember the user and role list will now have been inherited from the source environment, so some of the users who participate in testing will not the have the right roles and their accounts will have been disabled.

And that’s it. About 10 clicks that make the world a better place.

Happy Christmas Talent folks.

 

 

The post Copying a Talent Core HR environment appeared first on Tom's Talent Blog.

]]>
Tom http://www.tomstalentblog.co.uk/feed Tom's Talent Blog
https://powerofcommunity.show/2019/09/26/2-sara-lagerquist-lee-baker-and-matt-beard/ 2. Sara Lagerquist, Lee Baker and Matt Beard 2019-09-26T19:00:38.000+02:00 In this episode, I sat down with Business Applications MVP Sara Lagerquist from Sweden and Matt Beard and Lee Baker, two Dynamics developers from the UK. We get to know more about what they do and how they keep pace with our ever-changing platform, their experience of speaking at events and with imposter syndrome, before […] In this episode, I sat down with Business Applications MVP Sara Lagerquist from Sweden and Matt Beard and Lee Baker, two Dynamics developers from the UK.

We get to know more about what they do and how they keep pace with our ever-changing platform, their experience of speaking at events and with imposter syndrome, before moving on to the important stuff: how awesome dogs are.

Episode 2 – Sara Lagerquist, Lee Baker & Matt Beard

This episode was recorded on 24th Sept, 2019.

If you’d like to get in touch with Lee, Sara or Matt you can find them on Twitter:

Mentioned in this episode were:

]]>
Andrew Bibby https://powerofcommunity.show/blog-feed/ The Power of Community Show
https://community.dynamics.com/365/b/webinars/posts/sales-collaboration-using-dynamics-365-and-microsoft-teams Sales Collaboration using Dynamics 365 and Microsoft Teams with Cindy Liu 2019-08-19T07:00:00.000+02:00 Sales Collaboration using Dynamics 365 and Microsoft Teams! Cindy Liu demos the seamless collaboration experience with Microsoft Teams and Dynamics 365 integration. Dynamics 365 for Microsoft Teams in...(read more) read more)]]> Community Manager https://community.dynamics.com/365/b/webinars/rss Microsoft Dynamics 365 Webinars