We have a term set named Customer, which is been used inside lists and libraries on multiple site collections inside our SharePoint online tenant.

Here is the term set:-


And here is one list which uses the above term set inside a managed metadata column named "Contact Customer Name":-

enter image description here

Now as shown above, we have a field named "Contact Address", which mainly equals to the Customer address. so instead of manually entering the "Contact Address" for all the contacts under the same customer, i am planning to do the following:-

  1. for each term under the Customer term set >> to add a custom property named Address, as follow:-

enter image description here

  1. then have a Power automate flow or remote event receiver >> which will pull the address value for the related customer term, when the user create or edit a new contact list's item >> and update the list item's "Contact Address" property accordingly.

So is my above approach valid? now i do not want to store the customers as a lookup list and reference it using Lookup fields, as we want the customer term set to be used among multiple sites.

Any advice on the above ?


  • 1
    How many Custom Properties will you use? If not too many/too long ones, you can think about using a label for your term that includes the necessary info. E.g. "Customer A - Street One".
    – engineerer
    Dec 21, 2021 at 8:02
  • @engineerer currently we have one might add another one .. could be country
    – John John
    Dec 21, 2021 at 15:48
  • Did you figure out any idea? Dec 27, 2021 at 9:07
  • 1
    Tell me if you are familiar with creating an Event Receivers ? Dec 27, 2021 at 10:50
  • @AIMEN BOULAHIA yes i am familiar with server-side and remote event receivers.. but how i can benefit from this?
    – John John
    Dec 30, 2021 at 23:02

2 Answers 2


As a quick reply since there no much time to list all the details,

In a simple words :

  • You can apply your logic in Power Automate =>(When a new contact is created, then check the Customer Name and populate the Customer Address column with the required Custom Property in this Termset Prerequisites : Microsoft Graph API and Power Automate Premium License
  • Another way, is to develop a Remote Event Receiver => (When a new item was added, then populate Customer Address column with the required Custom Property in this Term (Source). How I think it only applies to SP Server, not sure if it works for SPO.

I can go further with your question if this bounty can last for more days.

I hope I helped a little bit.

  • thanks for your 2 proposed approaches.. but what will happen if i need to update the address of a customer (for example the customer address got changed)? then how i can reflect this change for all the related items?
    – John John
    Dec 30, 2021 at 23:15
  • Emmmmm that's a good question, that's why I prefer to work with lookup columns. This problem won't happen to you, How ever, you apply either a reccurence workflow that check for updates and apply them for all the related items, or a script PowerShell will do that job too Jan 2, 2022 at 8:20

Managed metadata is very powerful but still limited tool, due to:

  1. SharePoint REST api still does not fully support MMS columns;
  2. Using taxonomy fields in CSOM or PowerShell are also not straightforward as it looks like.
  3. You can face some issues in external analytical tools like Power BI.
  4. It is difficult for users to handle the taxonomy data.
  5. It is limited capabilities to view and manage custom properties of the taxonomy tags. Users will not be able to view address data in the columns as they could using dependant lookups

Your proposed solution is technically possible, but you have to check these points:

  1. Who will manage the customer data? End users or system administrators? How many customers entries will it be? How often the data will change?
  2. What if later you will need to have more data related to the customer
  3. Your approach to have custom property in the term and copy the data to the item is possible. But think how will you handle when you have to depersonalize information according to GDPR requirements (if applicable)

Taxonomy is absolutely suitable for stable enterprise wide dimensions or hierarchies. On the other hand, customers data often grow and change.

Take some time to think about similar solution:

  1. create a dedicated site for central customer data. Call it something like /sites/CRM
  2. Create a list for for customer data. Add as many columns as you need for this list, like address, bank account, etc. This list will be central repository for customer data. It will be user friendly and user will be able to handle the data themselves.
  3. Create the same list in all other sites where you will need customer data. It is easy to create a list based on another list using modern ui.
  4. Use Power Automate (or remote event receiver) to copy the data from central CRM site to all other sites on every change. The flow could use trigger that would fire on every change of the central CRM list. The flow should create or update customer data entries in all other sites.

In this scenario you can use all customer data in all your sites using lookups and dependant lookups. This solution will also help you to comply with GDPR requirements.

  • thanks for the reply.. but your proposed approach will depend on creating lookups fields. and those lookup fields have threshold limitations and will not work on large lists.. so i do not want to use lookup as i mentioned on my question.. thanks
    – John John
    Dec 30, 2021 at 23:11
  • also not sure why you mentioned the GDPR ? why i need to worry about it for storing and referencing the customers' addresses ?
    – John John
    Dec 30, 2021 at 23:17
  • It depends who are your customers. If customers include physical persons, then you have to handle this data with care and be ready to redact user personal data based on DSR.
    – ECM4D
    Jan 1, 2022 at 22:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.