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

Substitute multiple "words" in one string

Hi!
Im trying to find a way to replace mutliple words in one string.

For example I have a list with words that I want to replace with "***" in a string, if i had only one replace argument then I could simply use Substitute( "MyString etc and so on", "etc", "***" ). However to replace all words in the string from the list I have to loop throu the list and do "the replace action". 

So for I havent found a solution for this, any one that have any solution? 

 

My main goal is to change mutliple words in one string dynamically. For example:
Input: "This is my source string"
Output: "This **** my **** string"

1 ACCEPTED SOLUTION

Accepted Solutions
RandyHayes
Super User
Super User

@adamtj 

No worries on the language - you are actually doing just fine translating from what I see.

It was me who didn't really read through as completely as I should have.

 

Grab some popcorn and relax...this is a long response!

 

I spent a little more time now and read through all the posts.  The problem you were having is that ForAll was being treating as a ForLoop development function...it is not!  ForAll in PowerApps is designed to return a table of records based on your record definition.  In Message #3, you saw the result of this.  Your Record definition for the ForAll had no column defined, so you were going to get a Table of records based on the Split formula...a Result column.  But they are all going to be different and there is not a real good way to put them together.

So, you can't use ForAll like a ForLoop.  PowerApps is not a development platform, so it really doesn't have those type of functions - it's all about tables and records.

 

Okay, that said...so what you are trying to do is not a problem, but it does take some steps to get there.  The key is to be able to split the Notes text by the keywords.  And, since the Split function requires a specific split text, and yours is variable, then Split is really not helpful.  The next key is to abide by the No-Code platform that PowerApps is and adapt to the way that it needs to process data.

 

What needs to be done is to identify all the locations in the text where any of the keywords are found, then use the locations and lengths to rebuild the text and remove the "found" information.

 

So...here we go!

Using your example in Message #3 - The formula would be this:

 

With({_redactText: "****"; _keyWords: ["test@mail.com"; "999-123 45 67"]; _textToAlter: "Test string with an e-mail: test@mail.com and and phone: 999-123 45 67."};
    With({_items:
        With({_wds:
            // STEP 8: sort by location for purpose of rebuild of string
            Sort(
                // STEP 7: drop the table column - not used hereafter
                DropColumns(
                    // STEP 6: remove records with no word
                    Filter(
                        // STEP 5: Add the word to the record
                        AddColumns(
                            // STEP 4: Ungroup the table by the Value column to provide a table 
                               with inner records
                            Ungroup(
                                // STEP 1: iterate through keywords. 
                                   Note: no record defined so results will be a table in the Value column
                                ForAll(_keyWords;
                                    // Filter out empty locations
                                    Filter(
                                        // STEP 3: Group by the distinct locations
                                        GroupBy(
                                            // STEP 2: Cycle through entire string and gather all locations 
                                               where the keywords exist
                                            ForAll(Sequence(Len(_textToAlter)) As _seq;
                                                // return a record with the word, and location
                                                {wd:Value; loc:Find(Value; _textToAlter; _seq.Value)}
                                            ); 
                                        "loc"; "_locs"
                                        ); 
                                        !IsBlank(loc)
                                    )
                                );
                                "Value"
                            ),
                            "wd"; First(_locs).wd
                        );
                        !IsBlank(wd)
                    );
                    "_locs"
                );
                loc
            )};

            // STEP 9: iterate over a sequence based on the number of records in the _wds table
            ForAll(Sequence(CountRows(_wds));
                With({_prev:Last(FirstN(_wds; Value-1))};
                    // define record for Table as the prior record with the prev and len column added and values 
                       based on previous word
                    Patch(Last(FirstN(_wds; Value)); {prev: Coalesce(_prev.loc; 1); len:Len(_prev.wd)})
                )
            )

        )};

        // STEP 10: RETURN RESULTS
        If(CountRows(_items)=0;
            // Nothing to alter - return original
            _textToAlter;
            // Rebuild new string
            Concat(_items; Mid(_textToAlter; prev+len; loc-len-prev) & _redactText) & 
            With(LookUp(_items; loc=Max(_items; loc)); Mid(_textToAlter; loc + Len(wd)))
        )

    )
)

 

 

There are a lot of lines to the above because there are a lot of basic actions going on to get the data table shaped properly to be able to feed it to the final formula in the RETURN RESULTS section.

 

So here is what is going on - you need to read this from the inside out.

What we are doing is first building a table of all the locations of all the keywords.  This is all being put into the scoped With variable called _wds.  That variable will have a table of records with a wd and loc column.  The values will be the word and the location found (note as well, the formula will account for ALL instances of a keyword, not just one).

To get that table, we first iterate through all the keywords table (STEP 1).  This will give us our iterator.  That is then used to look through the entire string (this is the inner-most ForAll function) - STEP 2.  That is where we cycle through all the string based on the length of the string.  That ForAll returns the word in wd and the location found in loc as a record.  Since this will produce a lot of duplicated words and locations (because we just go through the string letter by letter), the formula is Grouping them by the loc (location) - STEP 3.  This will return a table with a distinct list of locations.  It will have a table column called _locs in it...we really don't need it except for the word in it. (NOTE, we also filter at this step to remove any blank locations).

 

So now we have a table from the Primary STEP 1 ForAll function.   Records will have ONLY a Value column that contains a record.  That record has a column called loc with a number and a column called _locs with a table.

 

In STEP 4, we remove the grouping of the Value column.  This will result in a table that has records with a loc column and a _locs column.  With that we then grab the word from the first record of the _locs column table and add it to the table we are building - STEP 5.

 

In STEP 6 we do a filter on the table we are building to remove any blank words.

 

STEP 7 we get rid of the _locs table column as we no longer need it (not really necessary, but just to be "clean").

 

STEP 8 we do a sort on all the loc columns as we want the table to be sorted by location in the string for rebuilding.

 

All of the above steps produce a formatted, sorted and clean table for the next process.  This is all stored in the _wds With variable.

 

In STEP 9, we work on the _wds table to add some more vital information.

So, we iterate over that table based on the number of rows in the table.  We get the previous record from the table first and assign it to a scoped With variable called _prev.  This is the record before the record we are currently working on - we need it for some values.  

Since we're in a ForAll, we need to define our record for the resulting table.  In this case, our record is made from the Patch of the _wds record (wd and loc) and we add two more columns, the prev column (which will hold the value of the previous word record location - note: coalesced to avoid blanks and set to 1 as the start), and the len column (which will hold the length of the previous word.)

All of this (STEP 9) produces a table.  Each record in the table will have a wd, loc, prev and len column with values.  It is all assigned to a With scoped variable called _items.

 

And that brings us to the final step - STEP 10.  We now have a formatted, sorted and data-full table with all the information we need to rebuild a string.

So, first off...if there happen to be no items in our table (no matches from prior steps), then we just return the original text.

Otherwise, we just iterate through the _items table in a Concat statement.  In that we use the Mid function to return bits and pieces of the original text based on all the locations and information we gathered in our table.  And then we append the redact text.  This will have returned not found text up to that location and then have the redact text in place of the keyword found.  

This then continues for the rest of the records in our table of locations.

Finally, we append the result with the Mid text to the end of the original text starting with the last location and length of word found.

 

SO...based on your example text, your resulting text from:

     Test string with an e-mail: test@mail.com and and phone: 999-123 45 67.

will be:

     Test string with an e-mail: **** and and phone: ****.

 

I hope this is all clear and helpful for you.  

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
NOTE: My normal response times will be Mon to Fri from 1 PM to 10 PM UTC (and lots of other times too!)
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

Really want to show your appreciation? Buy Me A Cup Of Coffee!

View solution in original post

20 REPLIES 20
WarrenBelz
Most Valuable Professional
Most Valuable Professional

Hi @adamtj ,

Do you mean something like

ForAll(
   YourListName,
   Substitute(
      YourString,
	  YourListFieldName,
	  "***"
   )
)

 

Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.

Visit my blog Practical Power Apps

Hi @WarrenBelz 
Thank you for replying!
I tried something like that but it did not change the source string, it returned another list with strings substituted with that current record in the list (the list in the ForAll loop)


In this example "TempStr" = 'Test string with an e-mail: test@mail.com and and phone: 999-123 45 67.'
Listitems in "GDPRContent" = 'test@mail.com' and '999-123 45 67'

UpdateContext({TempStr:{Text: varGdprLeadsNote.NotesHtmlText}});;

UpdateContext({TempCol:
    ForAll(
        Split(varGdprLeadsNote.GDPRContent;";");
        Patch(
            TempStr;
            {
                Text: Substitute(TempStr.Text; ThisRecord.Result; "****")
            }
        )
    )
})

 

Above code did not change the source string (TempStr). TempCol however returns a list:

{ Result: "Test string with a e-mail adress: **** and and phone: 999-123 45 67" },
{ Result: "Test string with a e-mail adress: test@mail.com and and phone: ****" }

 

 

WarrenBelz
Most Valuable Professional
Most Valuable Professional

Hi @adamtj ,

I am not a fan of either tables stored in Variables or Patching to them (that is what Collections and Collect) are for, however firstly try this

UpdateContext(
   {
      TempStr:{Text: varGdprLeadsNote.NotesHtmlText}
   }
);;
UpdateContext(
   {
      TempCol:
      ForAll(
         Split(
            varGdprLeadsNote,
            GDPRContent & 
            ";"
         ) As aPatch;
         Patch(
            TempStr;
            {
                Text: 
                Substitute(
                   TempStr.Text; 
                   aPatch.Result; 
                   "****"
                )
            }
         )
      )
   }
)

 

Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.

Visit my blog Practical Power Apps

adamtj
Helper II
Helper II

Hi!

I tried above solution but the results are the same unfortunately.

 

To clarify the "TempVar" and "TempCol" was only for my troubleshooting, the basic function looks like this:

ForAll(
    Split(varGdprLeadsNote.GDPRContent;";");
    Substitute(varGdprLeadsNote.NotesHtmlText; ThisRecord.Result; "****")
)

 

The problem is that I dont understand how to change the source string "varGdprLeadsNote.NotesHtmlText" to include changes made by the Substitute ForAll loop? The ForAll loop returns multiple strings, one string per item in "Split(varGdprLeadsNote.GDPRContent;";");" "List". How do I get that to be one string in the end?

 

I suppose to actually change the source string is not the solution, however is it possible to manipulate the result from ForAll to be one string incorporation the diffrent changes made by substitute?

 

Confused 🙂

WarrenBelz
Most Valuable Professional
Most Valuable Professional

Hi @adamtj ,

Please consider using a collection here - it is so much easier to manipulate the contents.

Hi @WarrenBelz ,
If its easier then im more then willing to try that. However i would appreciate any pointers you could give me on the subject.

 

My main goal is to change mutliple words in one string dynamically. For example:
Input: "This is my source string"
Output: "This **** my **** string"

WarrenBelz
Most Valuable Professional
Most Valuable Professional

Hi @adamtj ,

On reading this again, you seem to be replacing a string with itself - what is varGdprLeadsNote.NotesHtmlText and varGdprLeadsNote.GDPRContent - is this a table with two fields and where are you getting the words to replace

adamtj
Helper II
Helper II

Hi @WarrenBelz ,

I will try and explain the whole picture 🙂

The function for the app is to store and track notes and progress in a new sales leads and its on-boarding process. According to laws in EU (GDPR) information such as e-mail, phone number and similar information that could identify a person is consider sensitive. The law states that this kind of information isn't allowed to store longer than necessary. Hence the information must be traceable and erasable or able to be anonymized.

So when the user inputs information and notes into the app a series of RegEx searches are made on the text, text that matches "sensitive data" gets marked and the actual words copies and stores in same record as the actual note.

 

When the user saves the information a record with the notes and marked keywords (matched as sensitive information) will be saved in a table. Both fields are text fields, NotesHtmlText  and GDPRContent 

 

The record looks like this:

adamtj_0-1640123710280.png

 

Now to the tricky part. When the on-boarding are finished or the lead is terminated and appropriate time has past the data should be either anonymized or erased. I'm trying to anonymize the data.

 

So back to the question:

varGdprLeadsNote is the selected record in the "LeadNotesTable" that i want to anonymize.

varGdprLeadsNote.NotesHtmlText is the field that contains the actual note/information submitted by the user. 
VarGdprLeadsNote.GDPRContent is the field that contains identified sensitive "words", mail phone number etc inside the submitted note/information. The "keywords" are stored as a string separated with ";".

 

So the thing I'm trying to do is to replace NotesHtmlText with a new string where all of the keywords in GDPRContent  are replaced with "****". 

However this formula only takes me halfway. The NotesHtmlText remains unchanged which I now understand is expected.

ForAll(
    //Creates a collection to loop throu with the keywords to anonymize, by parsing the 
    //comma separeted string stored in the 'GDPRContent' field.
    Split(varGdprLeadsNote.GDPRContent;";");

    //Replaces the keywords in the submited text.
    Substitute(varGdprLeadsNote.NotesHtmlText; ThisRecord.Result; "****")
)

 

If i put the result from the ForAll into a collection I end up with a new collection containing each result from the loop:

adamtj_1-1640125651008.png

 

The result i want to write back should look like this:
<p>Bl bla **** med mer</p><p>Bla **** etc och så vidare</p>

 

As I said before any input are greatly appreciated!

 

 

WarrenBelz
Most Valuable Professional
Most Valuable Professional

Hi @adamtj ,

30 minutes on a model I built and I will have to raise the white flag

@RandyHayes , you might want to have a look

Helpful resources

Announcements

Tuesday Tip: Getting Started with Private Messages & Macros

Welcome to 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.   As our community family expands each week, we revisit our essential tools, tips, and tricks to ensure you’re well-versed in the community’s pulse. Keep an eye on the News & Announcements for your weekly Tuesday Tips—you never know what you may learn!   This Week's Tip: Private Messaging & Macros in Power Apps Community   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!   Our Knowledge Base article about private messaging and macros is the best place to find out more. Check it out today and discover some key tips and tricks when it comes to messages and macros:   Private Messaging: Learn how to enable private messages in your community profile and ensure you’re connected with other community membersMacros Explained: Discover the convenience of macros—prewritten text snippets that save time when posting in forums or sending private messagesCreating Macros: Follow simple steps to create your own macros for efficient communication within the Power Apps CommunityUsage Guide: Understand how to apply macros in posts and private messages, enhancing your interaction with the Community For detailed instructions and more information, visit the full page in your community today:Power Apps: Enabling Private Messaging & How to Use Macros (Power Apps)Power Automate: Enabling Private Messaging & How to Use Macros (Power Automate)  Copilot Studio: Enabling Private Messaging &How to Use Macros (Copilot Studio) Power Pages: Enabling Private Messaging & How to Use Macros (Power Pages)

April 4th Copilot Studio Coffee Chat | Recording Now Available

Did you miss the Copilot Studio Coffee Chat on April 4th? This exciting and informative session with Dewain Robinson and Gary Pretty is now available to watch in our Community Galleries!   This AMA discussed how Copilot Studio is using the conversational AI-powered technology to aid and assist in the building of chatbots. Dewain is a Principal Program Manager with Copilot Studio. Gary is a Principal Program Manager with Copilot Studio and Conversational AI. Both of them had great insights to share with the community and answered some very interesting questions!     As part of our ongoing Coffee Chat AMA series, this engaging session gives the Community the unique opportunity to learn more about the latest Power Platform Copilot plans, where we’ll focus, and gain insight into upcoming features. We’re looking forward to hearing from the community at the next AMA, so hang on to your questions!   Watch the recording in the Gallery today: April 4th Copilot Studio Coffee Chat AMA

Tuesday Tip: Subscriptions & Notifications

TUESDAY TIPS are our way of communicating helpful things we've learned or shared that have helped members of the Community. Whether you're just getting started or you're a seasoned pro, Tuesday Tips will help you know where to go, what to look for, and navigate your way through the ever-growing--and ever-changing--world of the Power Platform Community! We cover basics about the Community, provide a few "insider tips" to make your experience even better, and share best practices gleaned from our most active community members and Super Users.   With so many new Community members joining us each week, we'll also review a few of our "best practices" so you know just "how" the Community works, so make sure to watch the News & Announcements each week for the latest and greatest Tuesday Tips!   This Week: All About Subscriptions & Notifications We don't want you to a miss a thing in the Community! The best way to make sure you know what's going on in the News & Announcements, to blogs you follow, or forums and galleries you're interested in is to subscribe! These subscriptions ensure you receive automated messages about the most recent posts and replies. Even better, there are multiple ways you can subscribe to content and boards in the community! (Please note: if you have created an AAD (Azure Active Directory) account you won't be able to receive e-mail notifications.)   Subscribing to a Category  When you're looking at the entire category, select from the Options drop down and choose Subscribe.     You can then choose to Subscribe to all of the boards or select only the boards you want to receive notifications. When you're satisfied with your choices, click Save.   Subscribing to a Topic You can also subscribe to a single topic by clicking Subscribe from the Options drop down menu, while you are viewing the topic or in the General board overview, respectively.     Subscribing to a Label Find the labels at the bottom left of a post.From a particular post with a label, click on the label to filter by that label. This opens a window containing a list of posts with the label you have selected. Click Subscribe.           Note: You can only subscribe to a label at the board level. If you subscribe to a label named 'Copilot' at board #1, it will not automatically subscribe you to an identically named label at board #2. You will have to subscribe twice, once at each board.   Bookmarks Just like you can subscribe to topics and categories, you can also bookmark topics and boards from the same menus! Simply go to the Topic Options drop down menu to bookmark a topic or the Options drop down to bookmark a board. The difference between subscribing and bookmarking is that subscriptions provide you with notifications, whereas bookmarks provide you a static way of easily accessing your favorite boards from the My subscriptions area.   Managing & Viewing Your Subscriptions & Bookmarks To manage your subscriptions, click on your avatar and select My subscriptions from the drop-down menu.     From the Subscriptions & Notifications tab, you can manage your subscriptions, including your e-mail subscription options, your bookmarks, your notification settings, and your email notification format.     You can see a list of all your subscriptions and bookmarks and choose which ones to delete, either individually or in bulk, by checking multiple boxes.     A Note on Following Friends on Mobile Adding someone as a friend or selecting Follow in the mobile view does not allow you to subscribe to their activity feed. You will merely be able to see your friends’ biography, other personal information, or online status, and send messages more quickly by choosing who to send the message to from a list, as opposed to having to search by username.

Monthly Community User Group Update | April 2024

The monthly Community User Group Update is your resource for discovering User Group meetings and events happening around the world (and virtually), welcoming new User Groups to our Community, and more! Our amazing Community User Groups are an important part of the Power Platform Community, with more than 700 Community User Groups worldwide, we know they're a great way to engage personally, while giving our members a place to learn and grow together.   This month, we welcome 3 new User Groups in India, Wales, and Germany, and feature 8 User Group Events across Power Platform and Dynamics 365. Find out more below. New Power Platform User Groups   Power Platform Innovators (India) About: Our aim is to foster a collaborative environment where we can share upcoming Power Platform events, best practices, and valuable content related to Power Platform. Whether you’re a seasoned expert or a newcomer looking to learn, this group is for you. Let’s empower each other to achieve more with Power Platform. Join us in shaping the future of digital transformation!   Power Platform User Group (Wales) About: A Power Platform User Group in Wales (predominantly based in Cardiff but will look to hold sessions around Wales) to establish a community to share learnings and experience in all parts of the platform.   Power Platform User Group (Hannover) About: This group is for anyone who works with the services of Microsoft Power Platform or wants to learn more about it and no-code/low-code. And, of course, Microsoft Copilot application in the Power Platform.   New Dynamics365 User Groups   Ellucian CRM Recruit UK (United Kingdom) About: A group for United Kingdom universities using Ellucian CRM Recruit to manage their admissions process, to share good practice and resolve issues.    Business Central Mexico (Mexico City) About:  A place to find documentation, learning resources, and events focused on user needs in Mexico. We meet to discuss and answer questions about the current features in the standard localization that Microsoft provides, and what you only find in third-party locations. In addition, we focus on what's planned for new standard versions, recent legislation requirements, and more. Let's work together to drive request votes for Microsoft for features that aren't currently found—but are indispensable.   Dynamics 365 F&O User Group (Dublin) About: The Dynamics 365 F&O User Group - Ireland Chapter meets up in person at least twice yearly in One Microsoft Place Dublin for users to have the opportunity to have conversations on mutual topics, find out what’s new and on the Dynamics 365 FinOps Product Roadmap, get insights from customer and partner experiences, and access to Microsoft subject matter expertise.  Upcoming Power Platform Events    PAK Time (Power Apps Kwentuhan) 2024 #6 (Phillipines, Online) This is a continuation session of Custom API. Sir Jun Miano will be sharing firsthand experience on setting up custom API and best practices. (April 6, 2024)       Power Apps: Creating business applications rapidly (Sydney) At this event, learn how to choose the right app on Power Platform, creating a business application in an hour, and tips for using Copilot AI. While we recommend attending all 6 events in the series, each session is independent of one another, and you can join the topics of your interest. Think of it as a “Hop On, Hop Off” bus! Participation is free, but you need a personal computer (laptop) and we provide the rest. We look forward to seeing you there! (April 11, 2024)     April 2024 Cleveland Power Platform User Group (Independence, Ohio) Kickoff the meeting with networking, and then our speaker will share how to create responsive and intuitive Canvas Apps using features like Variables, Search and Filtering. And how PowerFx rich functions and expressions makes configuring those functionalities easier. Bring ideas to discuss and engage with other community members! (April 16, 2024)     Dynamics 365 and Power Platform 2024 Wave 1 Release (NYC, Online) This session features Aric Levin, Microsoft Business Applications MVP and Technical Architect at Avanade and Mihir Shah, Global CoC Leader of Microsoft Managed Services at IBM. We will cover some of the new features and enhancements related to the Power Platform, Dataverse, Maker Portal, Unified Interface and the Microsoft First Party Apps (Microsoft Dynamics 365) that were announced in the Microsoft Dynamics 365 and Power Platform 2024 Release Wave 1 Plan. (April 17, 2024)     Let’s Explore Copilot Studio Series: Bot Skills to Extend Your Copilots (Makati National Capital Reg... Join us for the second installment of our Let's Explore Copilot Studio Series, focusing on Bot Skills. Learn how to enhance your copilot's abilities to automate tasks within specific topics, from booking appointments to sending emails and managing tasks. Discover the power of Skills in expanding conversational capabilities. (April 30, 2024)   Upcoming Dynamics365 Events    Leveraging Customer Managed Keys (CMK) in Dynamics 365 (Noida, Uttar Pradesh, Online) This month's featured topic: Leveraging Customer Managed Keys (CMK) in Dynamics 365, with special guest Nitin Jain from Microsoft. We are excited and thankful to him for doing this session. Join us for this online session, which should be helpful to all Dynamics 365 developers, Technical Architects and Enterprise architects who are implementing Dynamics 365 and want to have more control on the security of their data over Microsoft Managed Keys. (April 11, 2024)     Stockholm D365 User Group April Meeting (Stockholm) This is a Swedish user group for D365 Finance and Operations, AX2012, CRM, CE, Project Operations, and Power BI.  (April 17, 2024)         Transportation Management in D365 F&SCM Q&A Session (Toronto, Online) Calling all Toronto UG members and beyond! Join us for an engaging and informative one-hour Q&A session, exclusively focused on Transportation Management System (TMS) within Dynamics 365 F&SCM. Whether you’re a seasoned professional or just curious about TMS, this event is for you. Bring your questions! (April 26, 2024)   Leaders, Create Your Events!    Leaders of existing User Groups, don’t forget to create your events within the Community platform. By doing so, you’ll enable us to share them in future posts and newsletters. Let’s spread the word and make these gatherings even more impactful! Stay tuned for more updates, inspiring stories, and collaborative opportunities from and for our Community User Groups.   P.S. Have an event or success story to share? Reach out to us – we’d love to feature you. Just leave a comment or send a PM here in the Community!

Exclusive LIVE Community Event: Power Apps Copilot Coffee Chat with Copilot Studio Product Team

We have closed kudos on this post at this time. Thank you to everyone who kudo'ed their RSVP--your invitations are coming soon!  Miss the window to RSVP? Don't worry--you can catch the recording of the meeting this week in the Community.  Details coming soon!   *****   It's time for the SECOND Power Apps Copilot Coffee Chat featuring the Copilot Studio product team, which will be held LIVE on April 3, 2024 at 9:30 AM Pacific Daylight Time (PDT).     This is an incredible opportunity to connect with members of the Copilot Studio product team and ask them anything about Copilot Studio. We'll share our special guests with you shortly--but we want to encourage to mark your calendars now because you will not want to miss the conversation.   This live event will give you the unique opportunity to learn more about Copilot Studio plans, where we’ll focus, and get insight into upcoming features. We’re looking forward to hearing from the community, so bring your questions!   TO GET ACCESS TO THIS EXCLUSIVE AMA: Kudo this post to reserve your spot! Reserve your spot now by kudoing this post.  Reservations will be prioritized on when your kudo for the post comes through, so don't wait! Click that "kudo button" today.   Invitations will be sent on April 2nd.Users posting Kudos after April 2nd. at 9AM PDT may not receive an invitation but will be able to view the session online after conclusion of the event. Give your "kudo" today and mark your calendars for April 3rd, 2024 at 9:30 AM PDT and join us for an engaging and informative session!

Tuesday Tip: Blogging in the Community is a Great Way to Start

TUESDAY TIPS are our way of communicating helpful things we've learned or shared that have helped members of the Community. Whether you're just getting started or you're a seasoned pro, Tuesday Tips will help you know where to go, what to look for, and navigate your way through the ever-growing--and ever-changing--world of the Power Platform Community! We cover basics about the Community, provide a few "insider tips" to make your experience even better, and share best practices gleaned from our most active community members and Super Users.   With so many new Community members joining us each week, we'll also review a few of our "best practices" so you know just "how" the Community works, so make sure to watch the News & Announcements each week for the latest and greatest Tuesday Tips!   This Week's Topic: Blogging in the Community Are you new to our Communities and feel like you may know a few things to share, but you're not quite ready to start answering questions in the forums? A great place to start is the Community blog! Whether you've been using Power Platform for awhile, or you're new to the low-code revolution, the Community blog is a place for anyone who can write, has some great insight to share, and is willing to commit to posting regularly! In other words, we want YOU to join the Community blog.    Why should you consider becoming a blog author? Here are just a few great reasons. 🎉   Learn from Each Other: Our community is like a bustling marketplace of ideas. By sharing your experiences and insights, you contribute to a dynamic ecosystem where makers learn from one another. Your unique perspective matters! Collaborate and Innovate: Imagine a virtual brainstorming session where minds collide, ideas spark, and solutions emerge. That’s what our community blog offers—a platform for collaboration and innovation. Together, we can build something extraordinary. Showcase the Power of Low-Code: You know that feeling when you discover a hidden gem? By writing about your experience with your favorite Power Platform tool, you’re shining a spotlight on its capabilities and real-world applications. It’s like saying, “Hey world, check out this amazing tool!” Earn Trust and Credibility: When you share valuable information, you become a trusted resource. Your fellow community members rely on your tips, tricks, and know-how. It’s like being the go-to friend who always has the best recommendations. Empower Others: By contributing to our community blog, you empower others to level up their skills. Whether it’s a nifty workaround, a time-saving hack, or an aha moment, your words have impact. So grab your keyboard, brew your favorite beverage, and start writing! Your insights matter and your voice counts! With every blog shared in the Community, we all do a better job of tackling complex challenges with gusto. 🚀   Welcome aboard, future blog author! ✍️✏️🌠 Get started blogging across the Power Platform Communities today! Just follow one of the links below to begin your blogging adventure.   Power Apps: https://powerusers.microsoft.com/t5/Power-Apps-Community-Blog/bg-p/PowerAppsBlog Power Automate: https://powerusers.microsoft.com/t5/Power-Automate-Community-Blog/bg-p/MPABlog Copilot Studio: https://powerusers.microsoft.com/t5/Copilot-Studio-Community-Blog/bg-p/PVACommunityBlog Power Pages: https://powerusers.microsoft.com/t5/Power-Pages-Community-Blog/bg-p/mpp_blog   When you follow the link, look for the Message Admins button like this on the page's right rail, and let us know you're interested. We can't wait to connect with you and help you get started. Thanks for being part of our incredible community--and thanks for becoming part of the community blog!

Top Solution Authors
Top Kudoed Authors
Users online (4,965)