cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
drewbty
Helper II
Helper II

Create html table from csv file

I am using the step Create File From Paginated Report

which creates a CSV file

the output of the CSV file is as below:

 

{
"statusCode": 200,
"headers": {
"Pragma": "no-cache",
"Transfer-Encoding": "chunked",
"Strict-Transport-Security": "max-age=31536000; includeSubDomains",
"X-Frame-Options": "deny",
"X-Content-Type-Options": "nosniff",
"RequestId": "27bd1808-fc47-457c-b3b6-b91933d08050",
"Access-Control-Expose-Headers": "RequestId",
"Timing-Allow-Origin": "*",
"x-ms-apihub-cached-response": "true",
"x-ms-apihub-obo": "false",
"Cache-Control": "no-store, must-revalidate, no-cache",
"Date": "Wed, 16 Nov 2022 10:26:49 GMT",
"Content-Type": "text/csv",
"Content-Length": "944082"
},
"body": "ClientID,Username,FirstName,Surname,ClientProfile,Channel,Affiliate\r\n0000,0000,xxxx,xxxx,xxxx,xxxxx,xxxxx\r\0000,0000,xxxx,xxxxx,xxxxx,xxxxx\r\n

 

How do I create a HTML table from this CSV output file?

 

1 ACCEPTED SOLUTION

Accepted Solutions
grantjenkins
Super User
Super User

Ok, new and improved solution without the Apply to each, or having to add the { } to build up each object. Also, much more efficient and not using up your billable actions.

 

Full flow is below. I'll go into each of the actions.

grantjenkins_0-1668673186075.png

 

Compose JSON contains your sample JSON data (including just 6 items in the second record).

grantjenkins_1-1668673245766.png

 

Compose Array uses the following expression. It splits the body by \r\n and skips the first row since that contains our headers and we only want the data.

 

skip(split(outputs('Compose_JSON')?['body'], decodeUriComponent('%0D%0A')), 1)

 

grantjenkins_2-1668673245311.png

 

Filter array just removes the last item (empty items). The expression is just:

 

item()

 

grantjenkins_3-1668673245425.png

 

Select takes in the output from Filter array. It uses the following expressions for each of the fields.

 

split(item(), ',')[0]
split(item(), ',')[1]
split(item(), ',')[2]
split(item(), ',')[3]
split(item(), ',')[4]
split(item(), ',')[5]

//And the last field that could potentially be empty

if(equals(length(split(item(), ',')), 6), '', split(item(), ',')[6])

 

grantjenkins_7-1668673328815.png

 

And finally, we have our Create HTML table which takes in the output from Select.

grantjenkins_0-1668673618124.png

 

After running the flow, we would have the following HTML table.

grantjenkins_9-1668673503118.png

 


----------------------------------------------------------------------
If I've answered your question, please mark the post as Solved.
If you like my response, please consider giving it a Thumbs Up.

View solution in original post

18 REPLIES 18
StretchFredrik
Multi Super User
Multi Super User

Hello!

 

This thread has a solution that should work in your case too:

 

Convert .csv file into an HTML table - Power Platform Community (microsoft.com)

Sundeep_Malik
Multi Super User
Multi Super User

Hey @drewbty 

 

You can use create html table action for this.

But it only accepts array as input.

So, do one thing, create a compose action. In that store the above.

Then make another compose in that write:

createArray(outputs('Compose'))

or if you want the headers, you can write createArray(outputs('Compose').headers)

and if you want only body you can write createArray(outputs('Compose').body)

And then pass this compose in create html table action.

 

This is how the flow looks like:

 

Sundeep_Malik_0-1668596368426.png

 

 

1st Compose:

Contains your above data

Sundeep_Malik_1-1668596399633.png

 

2nd compose:

used compose action and used createArray function inside it on headers.

Sundeep_Malik_2-1668596443228.png

 

3rd Compose:

Passed Outputs of compose 2

Sundeep_Malik_3-1668596474016.png

 

Output:

 

Sundeep_Malik_4-1668596508715.png

 

Or if you want everything in that html action, like headers, body and status code at the same time you will have to go in advance settings of html table action and make the columns manually, other than automatically.

 

If this was the solution, you were looking for you can accept this as a solution and if you liked the explanation, you can give a thumbs up. 🙂

Hi @Sundeep_Malik 

 

Getting the following error when attempting this.

 

Do I have to select the columns manually? How do I access each one if so

drewbty_1-1668599889304.png
drewbty_0-1668599870339.png

 

drewbty
Helper II
Helper II

If just headers are passed in on compose2 I get this 

 

drewbty_0-1668600351095.png

 

Sundeep_Malik
Multi Super User
Multi Super User

@drewbty 

I am seeing that orange arrow for the first time.

@StretchFredrik have you seen the orange arrow before or have any idea about it?

 

@drewbty I think the problem could be with that Power Bi Action can you expand it in run history and post the screenshot here.

 

And also post what you have added in that create html action in edit mode.

I think it just means that retries occured?

 

{"statusCode":200,"headers":{"Pragma":"no-cache","Transfer-Encoding":"chunked","Strict-Transport-Security":"max-age=31536000; includeSubDomains","X-Frame-Options":"deny","X-Content-Type-Options":"nosniff","RequestId":"4d4336f9-8172-4dbe-81c8-dcd2763f5e49","Access-Control-Expose-Headers":"RequestId","Timing-Allow-Origin":"*","x-ms-apihub-cached-response":"true","x-ms-apihub-obo":"false","Cache-Control":"no-store, must-revalidate, no-cache","Date":"Wed, 16 Nov 2022 11:57:22 GMT","Content-Type":"text/csv","Content-Length":"944082"},"body":"ClientID,Username,FirstName,Surname,ClientProfile,Channel,Affiliate\r\nxxxxx,xxxx,xxxx,xxxx,xxxxx\r\n

 

 

I've attached a sample of this first line of output here , and the screenshot below

 

drewbty_1-1668600599169.png

 

grantjenkins
Super User
Super User

What was the final output you were expecting to see?

 

Also, do you have the full JSON as the current JSON you posted isn't complete/valid. There is a missing n after \r\, and there should be 7 columns of data, but the second row only contains 6.

"ClientID,Username,FirstName,Surname,ClientProfile,Channel,Affiliate\r\n0000,0000,xxxx,xxxx,xxxx,xxxxx,xxxxx\r\0000,0000,xxxx,xxxxx,xxxxx,xxxxx\r\n

 

And lastly, will the fields be the same every time? (ClientID,Username,FirstName,Surname,ClientProfile,Channel,Affiliate)


----------------------------------------------------------------------
If I've answered your question, please mark the post as Solved.
If you like my response, please consider giving it a Thumbs Up.

Hi Grant


Expected final output is a html table, final step in the flow is create html table

 

I can't post the full Json as I'd have to just change all values to xxxx for integrity reasons, would take too long ( I thought it was CSV as that's the file output I selected in the flow step) 

 

Assume there is a r\ and n\ in all the right places. Apologies but that was just a typo when I was manually blacking out the field data

 

The row does contain 6 - that's because the final field has no data entry for it. Only the final column field (AffiliateID) can ever be blank

 

Yes the columns will be the same every time

grantjenkins
Super User
Super User

Here's a flow that will hopefully get what you're after. This assumes the only field that could be blank (as you mentioned) is the last field Affiliate.

 

The full flow is below. I'll go into each of the actions.

grantjenkins_0-1668603203735.png

 

Compose JSON contains your sample JSON data (including just 6 items in the second record).

grantjenkins_1-1668603263416.png

 

Compose Array uses the following expression. It splits the body by \r\n and skips the first row since that contains our headers and we only want the data.

skip(split(outputs('Compose_JSON')?['body'], decodeUriComponent('%0D%0A')), 1)

grantjenkins_2-1668603356732.png

 

Filter array just removes the last item (empty items). The expression is just:

item()

grantjenkins_3-1668603411827.png

 

Apply to each iterates over each of the items from Filter array.

grantjenkins_4-1668603443594.png

 

Compose Split uses the following expression to split each of the items by comma. It will give us an array containing each of the items in the current row.

split(items('Apply_to_each'), ',')

grantjenkins_5-1668603516263.png

 

Compose Object builds up an object for each row. The expressions are as follows:

outputs('Compose_Split')[0]
outputs('Compose_Split')[1]
outputs('Compose_Split')[2]
outputs('Compose_Split')[3]
outputs('Compose_Split')[4]
outputs('Compose_Split')[5]

//And the last field that could potentially be emtpy

if(equals(length(outputs('Compose_Split')), 6), '', outputs('Compose_Split')[6])

 

Looking at the raw code using Peek code we see:

{
    "inputs": {
        "Client ID": "@{outputs('Compose_Split')[0]}",
        "Username": "@{outputs('Compose_Split')[1]}",
        "First Name": "@{outputs('Compose_Split')[2]}",
        "Surname": "@{outputs('Compose_Split')[3]}",
        "Client Profile": "@{outputs('Compose_Split')[4]}",
        "Channel": "@{outputs('Compose_Split')[5]}",
        "Affiliate": "@{if(equals(length(outputs('Compose_Split')), 6), '', outputs('Compose_Split')[6])}"
    }
}

grantjenkins_6-1668603784278.png

 

And finally, after the Apply to each, we have our Create HTML table which takes in the output from Compose Object.

outputs('Compose_Object')

grantjenkins_7-1668603863045.png

 

After running the flow, we would have the following HTML table.

grantjenkins_8-1668603909515.png

 


----------------------------------------------------------------------
If I've answered your question, please mark the post as Solved.
If you like my response, please consider giving it a Thumbs Up.
drewbty
Helper II
Helper II


edit

drewbty
Helper II
Helper II

Hi @grantjenkins 

 

Couple of things:

 

Just like to flag first that my first step is Export To File For Paginated Reports and I have selected output type as CSV, not JSON, if this matters to your flow. 

 

The flow started running so here's hoping...

 

Update: 40 mins later and it's still running the 'apply to each' step so I had to cancel. I can see it's not designed for large sets of data which is fine, as there would probably just be a couple of hundred anyway in actuality

 

I updated the Export to File for Paginated Report parameter to just have ~200 rows and it runs through the core parts. 

 

Now, I still get the following error though at the final step - create html table

 

drewbty_0-1668645116619.png

 

I've tried to manually do columns by selecting them with item()?[ColumnName'] (not sure if syntax is right for this data type but worked for me before)

 

No luck however

 

drewbty_0-1668647898619.png

 

 

To highlight something, my Compose Object line looks a little different as I couldn't put curly brackets at the top and bottom as it gave an 'enter a valid json' error. 

 

 

 

My Compose Object sneak peak code looks like this

 

drewbty_3-1668646182863.png

 

 

 

 

 

 

{
    "inputs": "\"ClientID\": \"@{outputs('Compose_Split')[0]}\",\n\"Username\": \"@{outputs('Compose_Split')[1]}\",\n\"FirstName\": \"@{outputs('Compose_Split')[2]}\",\n\"Surname\": \"@{outputs('Compose_Split')[3]}\",\n\"ClientProfile\": \"@{outputs('Compose_Split')[4]}\",\n\"Channel\": \"@{outputs('Compose_Split')[5]}\",\n\"Affiliate\": \"@{if(equals(length(outputs('Compose_Split')), 6), '', outputs('Compose_Split')[6])}\"",
    "metadata": {
        "operationMetadataId": "3e89534f-52a2-414a-8f3b-1bb1dd468193"
    }
}

 

 

 

 

 

 

Unsure if my Compose Object step is actually doing anything, as it shows the input and output the same, just for 1 row

 

drewbty_0-1668646797288.png

 

Is this the expected format?

 

drewbty_1-1668646886148.png

 

 

 

 

 

 

Ajinder31
Continued Contributor
Continued Contributor

Hi @drewbty , It seems to me that we're missing the enclosing the Compose object inside curly brackets. Please check @grantjenkins post compose screenshot brackets highlighted below.

Ajinder31_0-1668661987373.png



--------------------------------------------------------------------------------------
If I have answered your question, please mark your post as Solved.
If you like my response, please give it a Thumbs Up.

drewbty
Helper II
Helper II

As I’ve flagged, that gives a ‘enter a valid json’ error if you attempt to include curly brackets
grantjenkins
Super User
Super User

I'll see if I can get rid of that Apply to each completely. Give me a few hours.


----------------------------------------------------------------------
If I've answered your question, please mark the post as Solved.
If you like my response, please consider giving it a Thumbs Up.
grantjenkins
Super User
Super User

Ok, new and improved solution without the Apply to each, or having to add the { } to build up each object. Also, much more efficient and not using up your billable actions.

 

Full flow is below. I'll go into each of the actions.

grantjenkins_0-1668673186075.png

 

Compose JSON contains your sample JSON data (including just 6 items in the second record).

grantjenkins_1-1668673245766.png

 

Compose Array uses the following expression. It splits the body by \r\n and skips the first row since that contains our headers and we only want the data.

 

skip(split(outputs('Compose_JSON')?['body'], decodeUriComponent('%0D%0A')), 1)

 

grantjenkins_2-1668673245311.png

 

Filter array just removes the last item (empty items). The expression is just:

 

item()

 

grantjenkins_3-1668673245425.png

 

Select takes in the output from Filter array. It uses the following expressions for each of the fields.

 

split(item(), ',')[0]
split(item(), ',')[1]
split(item(), ',')[2]
split(item(), ',')[3]
split(item(), ',')[4]
split(item(), ',')[5]

//And the last field that could potentially be empty

if(equals(length(split(item(), ',')), 6), '', split(item(), ',')[6])

 

grantjenkins_7-1668673328815.png

 

And finally, we have our Create HTML table which takes in the output from Select.

grantjenkins_0-1668673618124.png

 

After running the flow, we would have the following HTML table.

grantjenkins_9-1668673503118.png

 


----------------------------------------------------------------------
If I've answered your question, please mark the post as Solved.
If you like my response, please consider giving it a Thumbs Up.
drewbty
Helper II
Helper II

@grantjenkins this is next level thanks. Appreciate your help!!

 

Question for you. If I was to apply this across to other reports that might have empty values on other field rows (not always with the final field like with Affiliate here) - is there a way of handling that too?

grantjenkins
Super User
Super User

It would depend on the raw data. At the moment if there is a missing value it just doesn't add it. If there were two missing values and you got 4 out of the 6 values (for example) you might get: xxxx,xxxxx,xxxxx,xxxxx. In this case, how would you know if it was the second value that was missing, or the third, etc.?


----------------------------------------------------------------------
If I've answered your question, please mark the post as Solved.
If you like my response, please consider giving it a Thumbs Up.
drewbty
Helper II
Helper II

@grantjenkins seem to have missed a final comma after blacking out the data

 

If there is a blank on the Affiliate, it would display like this xxxx,xxxxx,xxxxx,xxxx,\r\n

 

If there is a blank on a field row in position2, it would be like xxxxx,,xxxxx,xxxxx

 

In other reports, the only other way I’ve found power automate might output the blanks like this xxxxx,”,xxxx,xxxx

 

So I think the blank inputs appear just 1 of just 2 ways as outputs

a double comma i.e. ,, 

or a comma, single quotation marks, then a comma i.e. ,”,

Helpful resources

Announcements

Community Roundup: A Look Back at Our Last 10 Tuesday Tips

As we continue to grow and learn together, it's important to reflect on the valuable insights we've shared. For today's #TuesdayTip, we're excited to take a moment to look back at the last 10 tips we've shared in case you missed any or want to revisit them. Thanks for your incredible support for this series--we're so glad it was able to help so many of you navigate your community experience!   Getting Started in the Community An overview of everything you need to know about navigating the community on one page!  Community Links: ○ Power Apps ○ Power Automate  ○ Power Pages  ○ Copilot Studio    Community Ranks and YOU Have you ever wondered how your fellow community members ascend the ranks within our community? We explain everything about ranks and how to achieve points so you can climb up in the rankings! Community Links: ○ Power Apps ○ Power Automate  ○ Power Pages  ○ Copilot Studio    Powering Up Your Community Profile Your Community User Profile is how the Community knows you--so it's essential that it works the way you need it to! From changing your username to updating contact information, this Knowledge Base Article is your best resource for powering up your profile. Community Links: ○ Power Apps ○ Power Automate  ○ Power Pages  ○ Copilot Studio    Community Blogs--A Great Place to Start There's so much you'll discover in the Community Blogs, and we hope you'll check them out today!  Community Links: ○ Power Apps ○ Power Automate  ○ Power Pages  ○ Copilot Studio    Unlocking Community Achievements and Earning Badges Across the Communities, you'll see badges on users profile that recognize and reward their engagement and contributions. Check out some details on Community badges--and find out more in the detailed link at the end of the article! Community Links: ○ Power Apps  ○ Power Automate  ○ Power Pages  ○ Copilot Studio    Blogging in the Community Interested in blogging? Everything you need to know on writing blogs in our four communities! Get started blogging across the Power Platform communities today! Community Links: ○ Power Apps  ○ Power Automate  ○ Power Pages  ○ Copilot Studio   Subscriptions & Notifications We don't want you to miss a thing in the community! Read all about how to subscribe to sections of our forums and how to setup your notifications! Community Links: ○ Power Apps  ○ Power Automate  ○ Power Pages  ○ Copilot Studio   Getting Started with Private Messages & Macros Do you want to enhance your communication in the Community and streamline your interactions? One of the best ways to do this is to ensure you are using Private Messaging--and the ever-handy macros that are available to you as a Community member! Community Links: ○ Power Apps  ○ Power Automate  ○ Power Pages  ○ Copilot Studio   Community User Groups Learn everything about being part of, starting, or leading a User Group in the Power Platform Community. Community Links: ○ Power Apps  ○ Power Automate  ○ Power Pages  ○ Copilot Studio   Update Your Community Profile Today! Keep your community profile up to date which is essential for staying connected and engaged with the community. Community Links: ○ Power Apps  ○ Power Automate  ○ Power Pages  ○ Copilot Studio   Thank you for being an integral part of our journey.   Here's to many more Tuesday Tips as we pave the way for a brighter, more connected future! As always, watch the News & Announcements for the next set of tips, coming soon!    

Calling all User Group Leaders and Super Users! Mark Your Calendars for the next Community Ambassador Call on May 9th!

This month's Community Ambassador call is on May 9th at 9a & 3p PDT. Please keep an eye out in your private messages and Teams channels for your invitation. There are lots of exciting updates coming to the Community, and we have some exclusive opportunities to share with you! As always, we'll also review regular updates for User Groups, Super Users, and share general information about what's going on in the Community.     Be sure to register & we hope to see all of you there!

April 2024 Community Newsletter

We're pleased to share the April Community Newsletter, where we highlight the latest news, product releases, upcoming events, and the amazing work of our outstanding Community members.   If you're new to the Community, please make sure to follow the latest News & Announcements and check out the Community on LinkedIn as well! It's the best way to stay up-to-date with all the news from across Microsoft Power Platform and beyond.    COMMUNITY HIGHLIGHTS   Check out the most active community members of the last month! These hardworking members are posting regularly, answering questions, kudos, and providing top solutions in their communities. We are so thankful for each of you--keep up the great work! If you hope to see your name here next month, follow these awesome community members to see what they do!   Power AppsPower AutomateCopilot StudioPower PagesWarrenBelzDeenujialexander2523ragavanrajanLaurensMManishSolankiMattJimisonLucas001AmikcapuanodanilostephenrobertOliverRodriguestimlAndrewJManikandanSFubarmmbr1606VishnuReddy1997theMacResolutionsVishalJhaveriVictorIvanidzejsrandhawahagrua33ikExpiscornovusFGuerrero1PowerAddictgulshankhuranaANBExpiscornovusprathyooSpongYeNived_Nambiardeeksha15795apangelesGochixgrantjenkinsvasu24Mfon   LATEST NEWS   Business Applications Launch Event - On Demand In case you missed the Business Applications Launch Event, you can now catch up on all the announcements and watch the entire event on-demand inside Charles Lamanna's latest cloud blog.   This is your one stop shop for all the latest Copilot features across Power Platform and #Dynamics365, including first-hand looks at how companies such as Lenovo, Sonepar, Ford Motor Company, Omnicom and more are using these new capabilities in transformative ways. Click the image below to watch today!   Power Platform Community Conference 2024 is here! It's time to look forward to the next installment of the Power Platform Community Conference, which takes place this year on 18-20th September 2024 at the MGM Grand in Las Vegas!   Come and be inspired by Microsoft senior thought leaders and the engineers behind the #PowerPlatform, with Charles Lamanna, Sangya Singh, Ryan Cunningham, Kim Manis, Nirav Shah, Omar Aftab and Leon Welicki already confirmed to speak. You'll also be able to learn from industry experts and Microsoft MVPs who are dedicated to bridging the gap between humanity and technology. These include the likes of Lisa Crosbie, Victor Dantas, Kristine Kolodziejski, David Yack, Daniel Christian, Miguel Félix, and Mats Necker, with many more to be announced over the coming weeks.   Click here to watch our brand-new sizzle reel for #PPCC24 or click the image below to find out more about registration. See you in Vegas!       Power Up Program Announces New Video-Based Learning Hear from Principal Program Manager, Dimpi Gandhi, to discover the latest enhancements to the Microsoft #PowerUpProgram. These include a new accelerated video-based curriculum crafted with the expertise of Microsoft MVPs, Rory Neary and Charlie Phipps-Bennett. If you’d like to hear what’s coming next, click the image below to find out more!   UPCOMING EVENTS Microsoft Build - Seattle and Online - 21-23rd May 2024 Taking place on 21-23rd May 2024 both online and in Seattle, this is the perfect event to learn more about low code development, creating copilots, cloud platforms, and so much more to help you unleash the power of AI.   There's a serious wealth of talent speaking across the three days, including the likes of Satya Nadella, Amanda K. Silver, Scott Guthrie, Sarah Bird, Charles Lamanna, Miti J., Kevin Scott, Asha Sharma, Rajesh Jha, Arun Ulag, Clay Wesener, and many more.   And don't worry if you can't make it to Seattle, the event will be online and totally free to join. Click the image below to register for #MSBuild today!   European Collab Summit - Germany - 14-16th May 2024 The clock is counting down to the amazing European Collaboration Summit, which takes place in Germany May 14-16, 2024. #CollabSummit2024 is designed to provide cutting-edge insights and best practices into Power Platform, Microsoft 365, Teams, Viva, and so much more. There's a whole host of experts speakers across the three-day event, including the likes of Vesa Juvonen, Laurie Pottmeyer, Dan Holme, Mark Kashman, Dona Sarkar, Gavin Barron, Emily Mancini, Martina Grom, Ahmad Najjar, Liz Sundet, Nikki Chapple, Sara Fennah, Seb Matthews, Tobias Martin, Zoe Wilson, Fabian Williams, and many more.   Click the image below to find out more about #ECS2024 and register today!     Microsoft 365 & Power Platform Conference - Seattle - 3-7th June If you're looking to turbo boost your Power Platform skills this year, why not take a look at everything TechCon365 has to offer at the Seattle Convention Center on June 3-7, 2024.   This amazing 3-day conference (with 2 optional days of workshops) offers over 130 sessions across multiple tracks, alongside 25 workshops presented by Power Platform, Microsoft 365, Microsoft Teams, Viva, Azure, Copilot and AI experts. There's a great array of speakers, including the likes of Nirav Shah, Naomi Moneypenny, Jason Himmelstein, Heather Cook, Karuana Gatimu, Mark Kashman, Michelle Gilbert, Taiki Y., Kristi K., Nate Chamberlain, Julie Koesmarno, Daniel Glenn, Sarah Haase, Marc Windle, Amit Vasu, Joanne C Klein, Agnes Molnar, and many more.   Click the image below for more #Techcon365 intel and register today!     For more events, click the image below to visit the Microsoft Community Days website.      

Tuesday Tip | Update Your Community Profile Today!

It's time for another TUESDAY TIPS, your weekly connection with the most insightful tips and tricks that empower both newcomers and veterans in the Power Platform Community! Every Tuesday, we bring you a curated selection of the finest advice, distilled from the resources and tools in the Community. Whether you’re a seasoned member or just getting started, Tuesday Tips are the perfect compass guiding you across the dynamic landscape of the Power Platform Community.   We're excited to announce that updating your community profile has never been easier! Keeping your profile up to date is essential for staying connected and engaged with the community.   Check out the following Support Articles with these topics: Accessing Your Community ProfileRetrieving Your Profile URLUpdating Your Community Profile Time ZoneChanging Your Community Profile Picture (Avatar)Setting Your Date Display Preferences Click on your community link for more information: Power Apps, Power Automate, Power Pages, Copilot Studio   Thank you for being an active part of our community. Your contributions make a difference! Best Regards, The Community Management Team

Hear what's next for the Power Up Program

Hear from Principal Program Manager, Dimpi Gandhi, to discover the latest enhancements to the Microsoft #PowerUpProgram, including a new accelerated video-based curriculum crafted with the expertise of Microsoft MVPs, Rory Neary and Charlie Phipps-Bennett. If you’d like to hear what’s coming next, click the link below to sign up today! https://aka.ms/PowerUp  

Super User of the Month | Ahmed Salih

We're thrilled to announce that Ahmed Salih is our Super User of the Month for April 2024. Ahmed has been one of our most active Super Users this year--in fact, he kicked off the year in our Community with this great video reminder of why being a Super User has been so important to him!   Ahmed is the Senior Power Platform Architect at Saint Jude's Children's Research Hospital in Memphis. He's been a Super User for two seasons and is also a Microsoft MVP! He's celebrating his 3rd year being active in the Community--and he's received more than 500 kudos while authoring nearly 300 solutions. Ahmed's contributions to the Super User in Training program has been invaluable, with his most recent session with SUIT highlighting an incredible amount of best practices and tips that have helped him achieve his success.   Ahmed's infectious enthusiasm and boundless energy are a key reason why so many Community members appreciate how he brings his personality--and expertise--to every interaction. With all the solutions he provides, his willingness to help the Community learn more about Power Platform, and his sheer joy in life, we are pleased to celebrate Ahmed and all his contributions! You can find him in the Community and on LinkedIn. Congratulations, Ahmed--thank you for being a SUPER user!

Users online (4,355)