web
You’re offline. This is a read only version of the page.
close
Skip to main content

Notifications

Announcements

Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Power Automate / How to generate a cust...
Power Automate
Unanswered

How to generate a custom prefix unique ID

(0) ShareShare
ReportReport
Posted on by 48

Hello, I would like some guidance on how to generate a unique ID that has a custom prefix when a new row is created in a MS List. I think it would be a formula of some sort but I'm not sure how to go about this.

 

The convention I'm looking for would be something like:

 

D&I-000001

D&I-000002

D&I-000003

etc

 

Any advice would be much appreciated.

Categories:
I have the same question (0)
  • DamoBird365 Profile Picture
    8,942 Microsoft Employee on at

    Hi @SteCoxy 

     

    I've an article on this here Unique IDs and pad a string - DamoBird365

     

    Please let me know if you need any further explanation.

     

    Please consider accepting my answer as a solution if it helps to solve your problem.

    Cheers
    Damien

    Please take a look and subscribe to my YouTube Channel for more Power Platform ideas and concepts, or take a look at my website. Thanks

  • SteCoxy Profile Picture
    48 on at

    Hi Damien

     

    Thank you for taking the time to reply to my query. 

     

    I won't lie - I'm a complete novice when it comes to this kind of thing, so please forgive my ignorance here.

     

    I've looked at your help guide and it appears more complex than what I'm looking for - I don't need for the function to pull any data from any other column for the prefix. 

     

    I simply need every time a new row is created (from the form submission that is made) for the unique ID column to have the prefix starting with D&I then a hyphen and then 5 zeros, before incrementally going up by 1, 2, 3 etc:

    D&I-000001

    D&I-000002

    D&I-000003 etc. 

     

    Any ideas on what formula this would require?

  • DamoBird365 Profile Picture
    8,942 Microsoft Employee on at

    HI @SteCoxy 

     

    If you are creating an item in a list every time a form submission is made, you need to get the last id and increment by 1, before prepending your fixed string.  

     

    In my article I use get item to get the last known ID as you need to know the last unique id before creating the next one.  Some folk use a separate list, others use the list item ID but you need to use something.

     

    DamoBird365_0-1643817677879.png

    I also have two columns to keep track of the running ID and the prepended ID but you could use replace() to remove your prefix to allow you to increment on the integer, it's just a bit more work.

     

    DamoBird365_2-1643817763371.png

    Above, assuming the column is called InvoiceID, you can add 1 on to the last number.

    add(int(first(outputs(‘Get_items’)?[‘body/value’])?[‘InvoiceId’]),1)

     

    You then need to pad with 0's:

    concat(substring(‘00000’, 1, sub(5, length(string(outputs(‘InvoiceID’))))),outputs(‘InvoiceID’))

     

    Then when you create your item, you can add 

    D&I- 

    alongside the output (instead of "Invoice" in the Title) from the above expression in compose.

     

    DamoBird365_3-1643817957625.png

     

    If this doesn't make sense, please explain where you get stuck.

     

    Damien

  • SteCoxy Profile Picture
    48 on at

    Cheers Damien, thank you for coming back to me here. I will give this a go and see if I can figure it out. All of this, at the very least, is certainly helping to improve my knowledge and skill base 

  • SteCoxy Profile Picture
    48 on at

    Hi Damien, again, please excuse my ignorence here - particularly if your solution covers exactly this, but something that's just come into my head is: does this have logic involved to reduce the number of zeros when it gets to 9, 99, 999 etc as below:

    D&I-000001

    ...

    D&I-000009

    D&I-000010 rather than

    D&I-0000010

  • SteCoxy Profile Picture
    48 on at

    Also, does it matter if I wish to create this based upon the system column called ID (read only), that autopopulates the cell incrementally: 1, 2, 3, 4 etc:

     

    Screenshot 2022-02-03 at 15.46.08.png

  • DamoBird365 Profile Picture
    8,942 Microsoft Employee on at

    Hi @SteCoxy 

     

    Yes, that is what length and substring do, let me explain.

     

    concat(substring(‘00000’, 1, sub(5, length(string(outputs(‘InvoiceID’))))),outputs(‘InvoiceID’))

     

    This will concatenate upto 5 0's based on the substring starting at position 1, and ending at length of the invoice ID.

     

    Therefore if invoiceID is 123, it is length 3.  The substring of 00000 from position 1 to 3 is 00 and concat the two, you get 00123.

     

    Try the following in a compose:

    concat('ABCD-',substring('00000', 1, sub(5, length('123'))),'123')

     

    DamoBird365_1-1643903770225.png

     

    You could use ID of the item but there are pros/cons.  It cannot be reset.  Delete an item, you loose that ID.  You could therefore get the last known ID of an item, increment by 1, pad with 0's, and prepend the string.

     

    Hope that has been useful.

     

    Damien

     

  • SteCoxy Profile Picture
    48 on at

    Hi Damien,

     

    I'm giving your solution an attempt but I'm falling at the first hurdle, sorry!

     

    I'm getting an "the expression is invalid" error message, unfortunately:

     

    Screenshot 2022-02-03 at 17.12.10.png

    I entered the following: add(int(first(outputs(‘Get_items’)?[‘body/value’])?[‘ID’]),1)

     

    I'm not sure if it helps things but this is a brand new project, so there's currently only dummy data (about 10 rows) in this MS List, so nothing in there has any valid last ID. I think what's confusing me is on your website it's based upon the Title column, but my title column is "Programme Name", so this wouldn't be suitable (as it's purely words). That's why I thought having a system generated ID column (1, 2, 3, etc) might make it easier for the string to be created, as it's based on, in effect, the row number in the list that is going up incrementally each time a new item/row is created. 

     

    Sorry to be taking up your time here, but any pointers on how best to achieve this would be much appreciated.

  • DamoBird365 Profile Picture
    8,942 Microsoft Employee on at

    HI @SteCoxy 

     

    You'll need to get your order by in get items correct, not sure where the id 2 comes from.  If you have a column called "id 2", you will need to get the internal name.  You need to go into list settings (top right cog and list settings) and then select the column in question.  In the address bar you will see the internal name

     

    DamoBird365_3-1643915924460.png

     

    For the flow, this is what you are looking for:

    DamoBird365_0-1643915711744.png

     

    add(int(first(outputs('Get_items')?['body/value'])?['ID']),1)

    concat('ABCD-',substring('00000', 1, sub(5, length(string(outputs('compose'))))),outputs('compose'))

     

    Output

    DamoBird365_2-1643915766129.png

     

    Please consider accepting my answer as a solution if it helps to solve your problem.

    Cheers
    Damien

    Please take a look and subscribe to my YouTube Channel for more Power Platform ideas and concepts, or take a look at my website. Thanks

  • SteCoxy Profile Picture
    48 on at

    Hi Damien,

     

    I think I'm making inroads here, albeit slowly but surely! 

     

    I've got as far as testing this out, so I've certainly made further progress than earlier, but I'm getting the following errors in the flow details:

     

     

    Just to clarify also, the formula - I'm looking for this to populate in a new column called "D&I Unique ID", but is it based upon the system generated ID column?

    Screenshot 2022-02-03 at 19.50.31.png

    I think I'm 3/4 there now Damien and I REALLY appreciate you helping me out. I know your patience must be getting tested to within an ounce of its limits, but I really feel like you're helping me massively to learn. 

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Forum hierarchy changes are complete!

In our never-ending quest to improve we are simplifying the forum hierarchy…

Ajay Kumar Gannamaneni – Community Spotlight

We are honored to recognize Ajay Kumar Gannamaneni as our Community Spotlight for December…

Leaderboard > Power Automate

#1
Michael E. Gernaey Profile Picture

Michael E. Gernaey 522 Super User 2025 Season 2

#2
Tomac Profile Picture

Tomac 364 Moderator

#3
abm abm Profile Picture

abm abm 243 Most Valuable Professional

Last 30 days Overall leaderboard