cancel
Showing results for 
Search instead for 
Did you mean: 
Reply

SharePoint Column EntityPropertyName and InternalName Field Reference in Power Automate.

It is common to have difficulty with references and expressions in Power Automate to correctly correspond to the SharePoint column. This is usually due to the differences of what is considered a column “Internal Name” or “Entity Property Name” and the “Title” or “Display Name” of a column.


Many of these issues can be prevented by how the SharePoint columns are initially created and named, and understanding how special characters are encoded. A short Microsoft Learn reference for SharePoint Naming Guidelines.

Most if the time instructions refer to using the "InternalName" of a field, but that is not entirely best for Power Automate. The "EntityPropertyName" is what will be used by Power Automate. Most of the time there will not be a difference between the "InternalName" and "EntityPropertyName", but I will show the difference. 


In this post, I’m going to discuss and show examples for:
SharePoint Fields or Columns
SharePoint Fields Identification Navigation

Creating a SharePoint column in Modern List View and creating a SharePoint column in the List Settin...
Viewing the Column InternalName and Special Character Encoding in the Edit Column page URL
Getting Column Properties in Power Automate using an HTTP Request
Using SharePoint column names in Dynamic Content and Expressions
Using SharePoint column names in a Filter Query

What to use? InternalName vs EntityPropertyName
Best Practices for creating and naming SharePoint column names

 

In this example I will be creating a SharePoint List which will be the example below.

Example Created SharePoint ListExample Created SharePoint List

 

Fields or Columns:


“Field” is a widely used term and frequently interchanged with the term “Column” when referring to a SharePoint list. In general there will not be an issue using either term.

 

The [MS-WSSTS] [2.1.2.9]: Windows SharePoint Services and the Learn Microsoft/Sharepoint 2010/Field Class defines:

A field is an element of a list or content type schema that specifies a property that is tracked for a list item. A field has an Internal Name, which specifies an identifier for the field. A field Internal Name is unique among other fields within a list and cannot contain spacesA field has an identifier, which is a GUID. A field has a specified field type. A field (2) also contains state information for settings and additional metadata specified by the field type.


The SharePoint Features Schema – XML Elements – Field Definitions – Field Element Attributes says A site column is a reusable column definition, or template, that you can assign to multiple lists across multiple SharePoint sites.

 

However, when using MS Graph, only the “Columns” are referred to in a list. MS Graph API columnDefinition resource type.

So MS Graph will not return system hidden fields which are not columns such as "SortBehavior", "FSObjType", "ScopeId" and many others. Basically, MS Graph can retrieve columns that are visible in the View editor of the SP List.


For the purposes of this blog post “Fields” and “Columns” will be referring to the same thing.

 

SharePoint Fields/Columns Identification:


A field has a few different types of identifiers that I will focus on. They may seem redundant or duplicate of the same information. There are a lot of technical reasons these different identifications exist which I don't really understand., but the difference seems to be how it is referred like as a SchemaXML Field Element Definition Attribute or a .NET CSOM Field Property or a MS Graph Column Definition Property.

You don't have to know the technical specifics, but it is good to be aware there can be subtle differences when using the identification terms in your flow.

 

Since the identifiers have different names but contain the same value, the table shows how they correspond to one another. For example if you changed the SchemaXML Field Definition Attribute "DisplayName" then the CSOM Field Property "Title" and MS Graph Column Definition Property "displayName" would reflect the change.

 

CSOM .NET Field Property SchemaXML Field Definition Attribute MS Graph Column Definition Property Edit or Rename  Example Column
"Title" "DisplayName" "displayName" Yes "1st Gate1 Review"
"InternalName" "Name" "name" No "_x0031_stGate1Review"
"EntityPropertyName"     No "OData__x0031_stGate1Review"
"StaticName" "StaticName"   Yes "_x0031_stGate1Review"
"Id" "Id" "id" No "16800963-30ef-41ee-a253-eeccfc917606"
  "Title"**   Yes "1st Gate1 Review"

 

Title: This considered the display name of the column which can contain spaces, special characters, or begin with a number. When a column is created, this will be what the user initially typed in as the column name. This can be edited/changed to a different name.


InternalName: This is the unique name of the column for the SharePoint List which will have no spaces and special characters will be encoded. If the column name begins with a number or special character, the number or special character will be encoded. Remains the same unchangeable for the life of the field.

 

EntityPropertyName: This is a unique name of the column, which is usually the same as the InternalName, which will have no spaces and special characters will be encoded. If the column name begins with a special character or number, the EntityPropertyName will begin with “OData_” followed by the InternalName. This is the name referenced by Power Automate.


StaticName: This is typically the same as the InternalName, which will have no spaces and special characters will be encoded. If the column name begins with a number or special character, the number or special character will be encoded. *InternalName and StaticName differ when there are duplicate columns created from Content Types.

 

The "name" and "displayName" are specific to using MS Graph for column information:
name: This is unique to using MS Graph where the column “name” corresponds to the InternalName of the field.

displayName: This is unique to using MS Graph where the column “displayName” corresponds to the Title of the column.

 

Id: This is a GUID unique identifier that refers to the column. The "Id" of a column will always be the same, and the most precise method for referencing a field.

 

**SchemaXml Field Definition Attribute - "Title"

The attribute "Title" used in the SchemaXml Field definition will initially be the same as the "DisplayName" or field property "Title" when the column is created. However, when the field property "Title" or "DisplayName" is changed/edited the SchemaXml "Title" will not change. Similarly, if the SchemaXml "Title" is changed/edited then the "DisplayName" and field property "Title" will not be changed.

 

Different Methods and Outcomes for Creating Columns in a SharePoint List:

For this blog example I have created a SharePoint list titled “ProjectTracker” and I am going to be adding columns to the list.
There are 2 primary methods for creating columns directly in a SharePoint list:
1. List View: “+ Add column”
2. List Settings Page: “Create column”
3. A 3rd method is via HTTP Request but the results are the same as using List Settings Page: “Create column”.

 

Modern List View + Add column

Modern List View +Add columnModern List View +Add column

List Settings page: "Create column"

List Settings "Create column" selectionList Settings "Create column" selection

HTTP Request to create a new column

HTTP Request to create a new field or columnHTTP Request to create a new field or column

 

It may appear creating a column from the List View with the +Add column button is the same as creating a column from the List Settings page with the “Create column” selection, but they have different results. Of course they create a new column in the SharePoint list, but the differ in how they treat the formatting of the system used InternalName.

  • Using the List View +Add column will have an InternalName of the column with the spaces automatically removed.
  • Using the List View +Add column will have an InternalName with some special characters such as & ampersand or “ quotes may be automatically removed.
  • Using the List Settings page with the “Create column” selection will not automatically remove any spaces or special characters. Any spaces or special characters will be encoded for the InternalName. (Using the HTTP Request to create a column name is the same.)
  • Neither the List View +Add column nor the List Settings Create column allow for a name to begin with a space. The space is automatically removed. HOWEVER, creating a field with an HTTP request and name beginning with a space will be encoded.

 

In this post example, I’m going to create columns in different methods to show the results. Each column name has characteristics that example different results.

 

Columns created using Modern List View +Add column:

  • "Project"
  • "Project_ID"
  • "Project Start Date"
  • "Project - Manager"
  • "P.O. Account/Number"
  • "1st Gate1 Review"

Columns created using the List Settings selection for "Create column"

  • "Customer Name"
  • "Customer - Billing Address"
  • "Total Project Qty./Hrs. Planned"
  • "Total Project Qty./Hrs. Completed"
  • "Total Project Qty./Hrs. Remaining"

 

I start with creating the columns in the List View with the +Add column:

List View +Add column "Project"List View +Add column "Project"List View +Add column "Project_ID"List View +Add column "Project_ID"List View +Add column "Project Start Date"List View +Add column "Project Start Date"List View +Add column "Project - Manager"List View +Add column "Project - Manager"List View +Add column "P.O. Account/Number"List View +Add column "P.O. Account/Number"List View +Add column "1st Gate1 Review"List View +Add column "1st Gate1 Review"

 

After adding the columns I go to the List Settings to create the remaining columns.

Initial Columns created with +Add columnInitial Columns created with +Add columnList Settings - Create ColumnList Settings - Create Column

 

These columns are created in individual pages:

List Settings - Create Column "Customer Name"List Settings - Create Column "Customer Name"List Settings - Create Column "Customer - Billing Address"List Settings - Create Column "Customer - Billing Address"List Settings - Create Column "Total Project Qty./Hrs. Planned"List Settings - Create Column "Total Project Qty./Hrs. Planned"List Settings - Create Column "Total Project Qty./Hrs. Completed"List Settings - Create Column "Total Project Qty./Hrs. Completed"List Settings - Create Column "Total Project Qty./Hrs. Remaining"List Settings - Create Column "Total Project Qty./Hrs. Remaining"

 

Viewing the Column InternalName and Special Character Encoding in the Edit Column page URL

 

Now that I have all my example columns created, I’m going to select each one individually in the List Settings that will allow me to Edit the column. I’m not going to do any editing, but I’m going to the Edit Column page for each to see the InternalName which is visible in the URL.

 

List Settings - Select each Column to Edit and View DetailsList Settings - Select each Column to Edit and View Details


The InternalName is what will be used in Power Automate when using Filter Query or making expressions.

The two columns "Project" and "Project_ID" have the same name displayed in the InternalName as it was created since there are no special characters or spaces, and the Underscore "_" does not count as a special character.

List Settings - Edit View Column "Project"List Settings - Edit View Column "Project"List Settings - Edit View Column "Project_ID"List Settings - Edit View Column "Project_ID"

 

 

The two columns "Project Start Date" and "Project - Manager" were created in the List View +Add Column so the spaces ' ' in the original name have been automatically removed. The dash '-' is a special character that is encoded as '_x002d_' in the InternalName "Project_x002d_Manager".

List Settings - Edit View Column "Project Start Date"List Settings - Edit View Column "Project Start Date"List Settings - Edit View Column "Project - Manager"List Settings - Edit View Column "Project - Manager"

 

 

The column "P.O. Account/Number" was created in the List View +Add column so the space ' ' will be automatically removed, but the special characters encoded of a period "." to '_x002e_' and slash "/" to '_x002f_' caused the character limit of the InternalName to be reached and cut the full name short to "P_x002e_O_x002e_Account_x002f_Nu" which is difficult to reference. 

List Settings - Edit View Column "P.O. Account/Number"List Settings - Edit View Column "P.O. Account/Number"

 

The column "1st Gate1 Review" was created in the List View with the +Add column so the spaces were automatically removed. However, the InternalName cannot begin with a number, so the leading '1' was replaced with encoding '_x0031_' to be "_x0032_stGate1Review"

List Settings - Edit View Column "1st Gate1 Review"List Settings - Edit View Column "1st Gate1 Review"

 

 

The column "Customer Name" was created in the List Settings Create Column so the space ' ' was not automatically removed. Instead the space ' ' was replaced with encoding '_x0020_' to make the InternalName "Customer_x0020_Name" in the URL.

List Settings - Edit View Column "Customer Name"List Settings - Edit View Column "Customer Name"

 

 

The column "Customer - Billing Address" was created in the List Settings with the Create Column selection. The spaces ' ' and dash '-' have been replaced with encoding which caused the InternalName to reach the character limit and cut the name short to "Customer_x0020__x002d__x0020_Bil" which is difficult to reference and hard to see that there are two underscore '__' next to each other.

List Settings - Edit View Column "Customer - Billing Address"List Settings - Edit View Column "Customer - Billing Address"

 

 

The three columns "Total Project Qty./Hrs. Planned" and "Total Project Qty./Hrs. Completed" and "Total Project Qty./Hrs. Remaining" were all created using the List Settings Create Column. This caused all spaces ' ' to be encoded to _x0020_ and the special characters were encoded. The character limit was reached for each InternalName due to encoding before any difference in the name was created. So to have a unique InternalName, the system automatically added a number to the end of the second and third column created with the same InternalName. 

List Settings - Edit View "columns beginning with Total Project Qty./Hrs."List Settings - Edit View "columns beginning with Total Project Qty./Hrs."

 

 

Below I’m listing the column names as I had originally created them with the corresponding InternalName shown in the URL.

Column Name/Title when created Column URL InternalName Method of Creating Column
"Project" "Project" List View +Add Column
"Project_ID" "Project_ID" List View +Add Column
"Project Start Date" "ProjectStartDate" List View +Add Column
"Project - Manager" "Project_x002d_Manager" List View +Add Column
"P.O. Account/Number" "P_x002e_O_x002e_Account_x002f_Nu" List View +Add Column
"1st Gate1 Review" "_x0031_stGate1Review" List View +Add Column
"Customer Name" "Customer_x0020_Name" List Settings Create column
"Customer - Billing Address" "Customer_x0020__x002d__x0020_Bil" List Settings Create column
"Total Project Qty./Hrs. Planned" "Total_x0020_Project_x0020_Qty_x0" List Settings Create column
"Total Project Qty./Hrs. Completed" "Total_x0020_Project_x0020_Qty_x00" List Settings Create column
"Total Project Qty./Hrs. Remaining" "Total_x0020_Project_x0020_Qty_x01" List Settings Create column

 

Some things to point out:

  • Column names with a space “ “ that are created with the List View +Add column will have the space automatically removed from the InternalName generated.
  • Column names with a “ “ space that are created in the List Settings page Create column will have the space encoded to “_x0020_” in the InternalName generated.
  • Column names that are long or has multiple special characters will have a length greater than the character limit allowed in the InternalName. This results in having an InternalName that is incomplete or difficult to recognize.
  • Column names beginning with a Number such as “1st Gate1 Review” or a special character will have the leading number encoded for the InternalName generated. If the column name contains a number that is not in the first position, then that number will not be encoded.
  • Column names that will have a duplicate InternalName will add a number at the end of the name beginning with zero 0 and counting up for each duplicate name.

 

How to Get SharePoint Column Properties in Power Automate using an HTTP Request:

 

One of the quickest ways to get the field/column properties with Power Automate is to use the Send an HTTP request to SharePoint action. Sending an GET type of HTTP request can return all of the properties of a field. In my example I'm not going to return all of the properties, so I am using a filter to limit what is returned by the HTTP request to the following: description, id, Title, InternalName, EntityPropertyName, StaticName, displayName, name.

 

I'm going to show two types of HTTP requests where one is the most common REST Request Uri Endpoint of _api/web/lists/GetbyTitle('{ListName}')/fields and the other uses the MS Graph api Url has a uri of _api/v2.1/{hostname}/lists('{ListName}')/columns.

 

Send HTTP Request to SharePoint - Fields and Columns InformationSend HTTP Request to SharePoint - Fields and Columns Information

 

The Uri for the first GET type HTTP Request to SharePoint which I'll call the standard or common method is:

Headers: Accept | application/json;odata=nometadata

 

 

_api/web/lists/GetbyTitle('ProjectTracker')/fields?$select= description, id, Title, InternalName, EntityPropertyName, StaticName

 

 

 

The Uri for the second GET type HTTP Request to SharePoint which uses the MS Graph method is:

Headers: Accept | application/json;odata.metadata=none

 

 

_api/v2.1/sites/mnscu.sharepoint.com/lists('ProjectTracker')/columns?$select=description, id, displayName, name

 

 

 

The results returned by the HTTP standard request and HTTP MS Graph request will be the same except how the property of the field/column is named. 

 

Results of Send HTTP Request to SharePoint - Fields and ColumnsResults of Send HTTP Request to SharePoint - Fields and Columns

 

The results of the HTTP Requests can be seen in the body, but selecting "Show raw outputs" will expand the results. There will be many other fields/columns in the outputs that were automatically system created such as Created by or Modified Date, so you have to scroll through to see the specific columns you want.

 

Results Send HTTP Request to SharePoint - Fields - Show raw outputsResults Send HTTP Request to SharePoint - Fields - Show raw outputsResults Send HTTP Request to Sharepoint - v2 Graph Columns - Show raw outputsResults Send HTTP Request to Sharepoint - v2 Graph Columns - Show raw outputs

 

In these HTTP request outputs we can see the same InternalName or name that was visible in the URL when looking at the Edit Column page in SharePoint List Settings.

 

Example Output for the standard HTTP request:

 

 

    "body": {
        "value": [
            {
                "Description": "",
                "EntityPropertyName": "Title",
                "Id": "fa564e0f-0c70-4ab9-b863-0177e6ddd247",
                "InternalName": "Title",
                "StaticName": "Title",
                "Title": "Title"
            },
            {
                "Description": "Created name \"Project\" column created in the List View with the +Add Column button. Renamed column to \"Project Name\" with edit column.",
                "EntityPropertyName": "Project",
                "Id": "61cfd9a6-4da5-416a-b1ad-a2eb09641793",
                "InternalName": "Project",
                "StaticName": "Project",
                "Title": "Project"
            },
            {
                "Description": "Created name \"Project_ID\" column created in the List View with the +Add Column button.",
                "EntityPropertyName": "Project_ID",
                "Id": "12bf03f0-3dca-423d-8c3b-d8b82d069063",
                "InternalName": "Project_ID",
                "StaticName": "Project_ID",
                "Title": "Project_ID"
            },
            {
                "Description": "Created name \"Project Start Date\" column created in the List View with the +Add Column button.",
                "EntityPropertyName": "ProjectStartDate",
                "Id": "b432b868-46e9-4f5c-a80b-2ea065c29b58",
                "InternalName": "ProjectStartDate",
                "StaticName": "ProjectStartDate",
                "Title": "Project Start Date"
            },
            {
                "Description": "Created name \"Project - Manager\" column created in the List View with the +Add Column button.",
                "EntityPropertyName": "Project_x002d_Manager",
                "Id": "2d5742a2-544a-46db-8955-33a270550f0e",
                "InternalName": "Project_x002d_Manager",
                "StaticName": "Project_x002d_Manager",
                "Title": "Project - Manager"
            },
            {
                "Description": "Created name \"P.0. Account/Number\" column created in the List View with the +Add Column button.",
                "EntityPropertyName": "P_x002e_O_x002e_Account_x002f_Nu",
                "Id": "cbd4308b-94eb-4a5a-bb25-f369b928162a",
                "InternalName": "P_x002e_O_x002e_Account_x002f_Nu",
                "StaticName": "P_x002e_O_x002e_Account_x002f_Nu",
                "Title": "P.O. Account/Number"
            },
            {
                "Description": "Created name \"1st Gate1 Review\" column created in the List View with the +Add Column button.",
                "EntityPropertyName": "OData__x0031_stGate1Review",
                "Id": "16800963-30ef-41ee-a253-eeccfc917606",
                "InternalName": "_x0031_stGate1Review",
                "StaticName": "_x0031_stGate1Review",
                "Title": "1st Gate1 Review"
            },
            {
                "Description": "Created name \"Customer Name\" column created in the List Settings Page with the Create Column button.",
                "EntityPropertyName": "Customer_x0020_Name",
                "Id": "b1ee2e33-118f-4fea-bd24-0f02a6c2fbb7",
                "InternalName": "Customer_x0020_Name",
                "StaticName": "Customer_x0020_Name",
                "Title": "Customer Name"
            },
            {
                "Description": "Created name \"Customer - Billing Address\" column created in the List Settings Page with the Create Column button.",
                "EntityPropertyName": "Customer_x0020__x002d__x0020_Bil",
                "Id": "82cd1421-6106-4edf-ba8a-632019f0fbe5",
                "InternalName": "Customer_x0020__x002d__x0020_Bil",
                "StaticName": "Customer_x0020__x002d__x0020_Bil",
                "Title": "Customer - Billing Address"
            },
,
            {
                "Description": "Created name \"Total Project Qty./Hrs. Completed\" column created in the List Settings Page with the Create Column button.",
                "EntityPropertyName": "Total_x0020_Project_x0020_Qty_x0",
                "Id": "87b6a17a-ad46-4552-8bc3-145dd88a4999",
                "InternalName": "Total_x0020_Project_x0020_Qty_x0",
                "StaticName": "Total_x0020_Project_x0020_Qty_x0",
                "Title": "Total Project Qty./Hrs. Planned"
            },
            {
                "Description": "Created name \"Total Project Qty./Hrs. Completed\" column created in the List Settings Page with the Create Column button.",
                "EntityPropertyName": "Total_x0020_Project_x0020_Qty_x00",
                "Id": "b5023a5f-a0e8-4f29-9168-ae45b050a459",
                "InternalName": "Total_x0020_Project_x0020_Qty_x00",
                "StaticName": "Total_x0020_Project_x0020_Qty_x00",
                "Title": "Total Project Qty./Hrs. Completed"
            },
            {
                "Description": "Created name \"Total Project Qty./Hrs. Remaining\" column created in the List Settings Page with the Create Column button.",
                "EntityPropertyName": "Total_x0020_Project_x0020_Qty_x01",
                "Id": "993e3050-e073-4355-92dd-25654dea765d",
                "InternalName": "Total_x0020_Project_x0020_Qty_x01",
                "StaticName": "Total_x0020_Project_x0020_Qty_x01",
                "Title": "Total Project Qty./Hrs. Remaining"
            {
        ]
    }

 

 

 

Example Output for the Project - Manager column in the MS Graph v2 HTTP request:

 

 

    "body": {
        "value": [
            {
                "description": "",
                "displayName": "Title",
                "id": "fa564e0f-0c70-4ab9-b863-0177e6ddd247",
                "name": "Title"
            },
            {
                "description": "Created name \"Project\" column created in the List View with the +Add Column button. Renamed column to \"Project Name\" with edit column.",
                "displayName": "Project",
                "id": "61cfd9a6-4da5-416a-b1ad-a2eb09641793",
                "name": "Project"
            },
            {
                "description": "Created name \"Project_ID\" column created in the List View with the +Add Column button.",
                "displayName": "Project_ID",
                "id": "12bf03f0-3dca-423d-8c3b-d8b82d069063",
                "name": "Project_ID"
            },
            {
                "description": "Created name \"Project Start Date\" column created in the List View with the +Add Column button.",
                "displayName": "Project Start Date",
                "id": "b432b868-46e9-4f5c-a80b-2ea065c29b58",
                "name": "ProjectStartDate"
            },
            {
                "description": "Created name \"Project - Manager\" column created in the List View with the +Add Column button.",
                "displayName": "Project - Manager",
                "id": "2d5742a2-544a-46db-8955-33a270550f0e",
                "name": "Project_x002d_Manager"
            },
            {
                "description": "Created name \"P.0. Account/Number\" column created in the List View with the +Add Column button.",
                "displayName": "P.O. Account/Number",
                "id": "cbd4308b-94eb-4a5a-bb25-f369b928162a",
                "name": "P_x002e_O_x002e_Account_x002f_Nu"
            },
            {
                "description": "Created name \"1st Gate1 Review\" column created in the List View with the +Add Column button.",
                "displayName": "1st Gate1 Review",
                "id": "16800963-30ef-41ee-a253-eeccfc917606",
                "name": "_x0031_stGate1Review"
            },
            {
                "description": "Created name \"Customer Name\" column created in the List Settings Page with the Create Column button.",
                "displayName": "Customer Name",
                "id": "b1ee2e33-118f-4fea-bd24-0f02a6c2fbb7",
                "name": "Customer_x0020_Name"
            },
            {
                "description": "Created name \"Customer - Billing Address\" column created in the List Settings Page with the Create Column button.",
                "displayName": "Customer - Billing Address",
                "id": "82cd1421-6106-4edf-ba8a-632019f0fbe5",
                "name": "Customer_x0020__x002d__x0020_Bil"
            },
            {
                "description": "Created name \"Total Project Qty./Hrs. Completed\" column created in the List Settings Page with the Create Column button.",
                "displayName": "Total Project Qty./Hrs. Planned",
                "id": "87b6a17a-ad46-4552-8bc3-145dd88a4999",
                "name": "Total_x0020_Project_x0020_Qty_x0"
            },
            {
                "description": "Created name \"Total Project Qty./Hrs. Completed\" column created in the List Settings Page with the Create Column button.",
                "displayName": "Total Project Qty./Hrs. Completed",
                "id": "b5023a5f-a0e8-4f29-9168-ae45b050a459",
                "name": "Total_x0020_Project_x0020_Qty_x00"
            },
            {
                "description": "Created name \"Total Project Qty./Hrs. Remaining\" column created in the List Settings Page with the Create Column button.",
                "displayName": "Total Project Qty./Hrs. Remaining",
                "id": "993e3050-e073-4355-92dd-25654dea765d",
                "name": "Total_x0020_Project_x0020_Qty_x01"
            }
        ]
    }

 

 

 

These outputs of the HTTP requests could be followed by a Parse JSON action in order to use the values in the flow.

Using SharePoint column names in Dynamic Content and Expressions

 

The most common use will be with the Dynamic Content or within expressions. What can be confusing is that the Dynamic Content options will use the Title/displayName of a column, but the real expression for a value will use the EntityPropertyName. Below is a visual of the Dynamic Content options when using Get Items.

Get Items - Dynamic Content optionsGet Items - Dynamic Content options

 

Since it is a Get Items that returns a multiple item array, the moment I put the Dynamic Content into the Compose field, it will create an Apply to Each. So my example below uses the Apply to Each item reference, but it is still visible that the InternalNames* of the columns are being used to reference the value.

 

Dynamic Content - item expression column namesDynamic Content - item expression column namesDynamic Content - item expression column namesDynamic Content - item expression column names 

 

Some of the names are easy to refrence such as "Project_ID" or "ProjectStartDate", but some of the special characters and encoding included in column names cause the InternalName to be difficult to reference.

 

For example, if I wanted to calculate the project's Remaining Hours by subtracting the Completed Hours from the Planned Hours I would use the subtract sub() expression and the InternalNames of "Total Project Qty./Hrs. Planned" and "Total Project Qty./Hrs. Completed" in the expression.

Subtract Expression - Planned Hours and Completed HoursSubtract Expression - Planned Hours and Completed Hours

 

The expression is:

 

 

sub(items('Apply_to_each')?['Total_x0020_Project_x0020_Qty_x0'],items('Apply_to_each')?['Total_x0020_Project_x0020_Qty_x00'])

 

 

This expression is difficult to read if you do not know that the Completed Hours column has an additional zero 0 at the end to differentiate it from the Planned Hours column.

 

Using SharePoint column names in a Filter Query

Another time the SharePoint column name needs to be used is within the Filter Query of a Get Items. To filter a list in the Get Items the field of Filter Query must have the InternalName and filter condition.

 

Using my example sharepoint list:

Example SharePoint List w ItemsExample SharePoint List w Items

 

I could create the following filter queries for the "Project_ID" or "Project - Manager" or "Total Project Qty./Hrs. Planned" columns:

 

A Get Items Filter Query for "Project_ID" that equals 'HA1234' would be:

 

 

Project_ID eq 'HA1234'

 

 

A Get Items Filter Query for a "Project - Manager" who is 'Bob Barker' would be:

 

 

Project_x002d_Manager eq 'Bob Barker'

 

 

A Get Items Filter Query for projects where the Total Project Qty./Hrs. Planned is greater than 50 would be:

 

 

Total_x0020_Project_x0020_Qty_x0 gt 50

 

 

 

Here is a screenshot example of each of these used in a Filter Query:

Get Items - Filter Query examplesGet Items - Filter Query examples

 

Each one of these Filter Queries uses the SharePoint column InternalName which is the same as their EntityPropertyName.

 

When the column begins with a special character or a number, use the EntityPropertyName which will begin with "OData_" since that is the name that will be reconginzed.

 

Below is an example of a filter query using my column "1st Gate1 Review" which has an InternalName of  "_0031_stGate1Review" and a Entity Property Name of "OData__0031_stGate1Review" for the field.

 

The Filter Query has to use the EntityPropertyName. 

 

Filter Query - Special Name - Use EntityPropertyNameFilter Query - Special Name - Use EntityPropertyName

 

What to use? Field InternalName vs EntityPropertyName


The field InternalName and the EntityPropertyName are going to be the same majority of the time. There will be a difference between the two names when the name begins with a number or most special characters that were encoded when the column was created.

 

In my example:

Column Title InternalName EntityPropertyName
1st Gate1 Review _x0031_stGate1Review OData__x0031_stGate1Review

 

Most power automate questions and answers refer to using the InternalName of a field; however, this is not entirely accurate. People quickly go to edit a column and look in the URL for the field={InternalName} and assume that name will work.

 

But Power Automate transmits OData (Open Data) protocol and this uses and Entity Data Model. There is a lot of complex stuff I don't fully understand in the [MS-ODATA]: Open Data Protocol and the EDM terms [MC-CSDL]:Conceptual Schema Definition File Format.

 

But what I can understand is the identification of the field that is used by Power Automate. When a Get Items request is sent, the fields and values are returned. The name of the field or column that is returned to Power Automate is the one that is used in the rest of the flow. This name matches the EntityPropertyName.

 

Below is an snip of the Get Items raw outputs. The column names are highlighted and specifically the column "OData__x0031_stGate1Revew" shows that the EntityPropertyName is used for the field.

Get Items - Raw Outputs clipGet Items - Raw Outputs clip

This field name matches what will be used for dynamic content:

Compose - 1st Gate1 ReviewCompose - 1st Gate1 Review

Even if I use the Update Item, Power Automate automatically refers to the field by the EntityPropertyName:

Update Item - Peek Code 1st Gate1ReviewUpdate Item - Peek Code 1st Gate1Review

 

However, if I send an HTTP request to the InternalName "_x0031_stGate1Review" it is an Error Bad Request "The property '_x0031_stGate1Review' does not exist on type SP.Data.ProjectTrackerListItem". And this further confirms that Power Automate needs to use the Property of the ListItemEntityType which is why you should use the EntityPropertyName for the field.

Failed HTTP Request - Update Item - _x0031_stGate1ReviewFailed HTTP Request - Update Item - _x0031_stGate1Review

 

(This also probably explains why PA is unable to get Excel tables that have column names that begin with a special character. The Excel file table column doesn't have an "EntityPropertyName" to use that won't error due to beginning with a special character.)

 

 

The EntityPropertyName would be the value to use for power automate.

 

Best Practices for creating and naming SharePoint column names

 

So with the lengthy explanation about SharePoint columns and how their names are changed or used internally. What is the best approach?

https://learn.microsoft.com/en-us/microsoft-365/community/sharepoint-naming-guidelines 

The Microsoft SharePoint Naming Guidelines is a good start.

  • Avoid highly generalized words like "stuff" or "Information"
  • Write in the Description box to explain more about the column
  • Be clear on what this column represents; you know what you want to capture as metadata, the user of the item may not.
  • If you use abbreviations, expand the meaning in the description to ensure the user understands the data
  • If the title refers to the data type of the information, ensure the column data type reflects this, e.g. Number of Widgets, the data type is number not string.

I'm going to add a few more recommendations. But the main thing to keep in mind is InternalName and EntityPropertyName are PERMANENT from creation for life of column.

The column Title/displayName are able to be edited and changed, but this will not change the EntityPropertyName that is used by the system.

When Creating New Columns in a SharePoint List:

  • Know there can be differences between List View +Add Column and List Settings Page Create column.
  • Do not use any special characters when creating a column name.
  • Do not begin a column name with a number.
  • Do not use any spaces " " when creating a column name in List Settings page Create Column.
    • Use "_" underscore if the column name needs to have spaces. The underscore "_" will not be encoded.
  • Know that Power Automate uses the EntityPropertyName
  • Know Get Items Filter Query will use the EntityPropertyName

Create the column with a full clean name and no special characters. Click Save Create. After the column is created Edit the Title for the user Display Name.

 

Instead of my previous example of column names, I made a new list and new columns with clean names.

New SharePoint List - Columns Created with no spaces or special characters.New SharePoint List - Columns Created with no spaces or special characters.

 

After the columns were created, I went through each and edited the Title to be more user friendly.

Edited Column Titles to be easier to read Display NameEdited Column Titles to be easier to read Display Name

 

If I go into power automate and look at the dynamic content the fields are easier to read and recognize.

Better List - Dynamic Content is Easier to Read in Power AutomateBetter List - Dynamic Content is Easier to Read in Power Automate

 

Comparing the names from my new SharePoint list "BetterProjectTracker" to the names I previously made in my older original SharePoint list "Project Tracker" in the example. It is easier to see that the new SharePoint list "BetterProjectTracker" columns that were created and renamed are much easier to recognize.

Compare New List BetterProjectTracker to Old List ProjectTracker - columns are easier to read if created with a clean name and then editedCompare New List BetterProjectTracker to Old List ProjectTracker - columns are easier to read if created with a clean name and then edited

 

I hope this can be a reference to understanding SharePoint column names and how they are connected to Power Automate.

2 REPLIES 2

I made column named "Law1". InternalName of this column is "_x004c_aw1".

I don't know why "L" was encoded. Do you have any idea?

Fantástico seu artigo!!! Parabéns.

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!    This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Community MembersNumber SolutionsSuper UsersNumber Solutions Deenuji 9 @NathanAlvares24  17 @Anil_g  7 @ManishSolanki  13 @eetuRobo  5 @David_MA  10 @VishnuReddy1997  5 @SpongYe  9JhonatanOB19932 (tie) @Nived_Nambiar  8 @maltie  2 (tie)   @PA-Noob  2 (tie)   @LukeMcG  2 (tie)   @tgut03  2 (tie)       Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 2: Community MembersSolutionsSuper UsersSolutionsPower Automate  @Deenuji  12@ManishSolanki 19 @Anil_g  10 @NathanAlvares24  17 @VishnuReddy1997  6 @Expiscornovus  10 @Tjan  5 @Nived_Nambiar  10 @eetuRobo  3 @SudeepGhatakNZ 8     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 3:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji32ManishSolanki55VishnuReddy199724NathanAlvares2444Anil_g22SudeepGhatakNZ40eetuRobo18Nived_Nambiar28Tjan8David_MA22   Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Week 4:Community MembersSolutionsSuper UsersSolutionsPower Automate Deenuji11FLMike31Sayan11ManishSolanki16VishnuReddy199710creativeopinion14Akshansh-Sharma3SudeepGhatakNZ7claudiovc2CFernandes5 misc2Nived_Nambiar5 Usernametwice232rzaneti5 eetuRobo2   Anil_g2   SharonS2  

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages

Users online (766)