Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

By | October 30, 2026

Restrict Dataverse Record Access by Column Value Using Filtered Record OwnershipImagine managing sales teams across four states. Your California sales reps should see California accounts, your Arizona reps should see Arizona accounts, and your sales head should have access to all accounts.

You could manage this using business units, teams, or manual record sharing. But as your business grows and records keep changing, maintaining these access rules can become complicated.

What if you could control who sees a record based on a value in the record itself?

That’s exactly what Microsoft’s new Filtered Record Ownership feature in Dataverse aims to do. Currently in preview, it lets you apply row-level security using column values, such as State, instead of relying on record ownership.

In this blog, we’ll walk through how to set up Filtered Record Ownership for a Regional Accounts table, create state-based filters, and assign them to security roles so each salesperson sees only the accounts relevant to their region.

What is Filtered Record Ownership?

Filtered record ownership lets you define filters based on your use case, such as State equals California, and grant them to a security role. Users with that role can create or read only the records that match the filter.

A few things are different from regular tables:

  • A filtered table has no record owner, so records can’t be shared or assigned to an individual. The Created By column still tracks who created the record.
  • When you create the table, the system creates a global All records privilege and gives it to the System Administrator role, so admins are never locked out.
  • Filters can be granted for the Create, Read, Write, Delete, Append, and Append To

Prerequisites

  1. Access: The System Administrator security role, which you need to create and assign the security roles.
  2. A model-driven app: One that includes your table, since the filter is built from the table view.
  3. A test environment: Since this is a preview feature, try everything in a dev or sandbox environment first.

Steps to set up filtered record ownership

  1. Create a table with filtered record ownership

In Power Apps, open your solution and select New > Table (advanced properties). Enter the display name (we used Regional Accounts), expand Advanced options, set Record ownership to Filtered (preview), and click Save.
Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership
Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

We added columns for Account Name, City, State, Industry, and Annual Revenue, and entered sample accounts for California, Georgia, Alaska, and Arizona. State is the column our filters are based on.

Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

Note: You can’t change a table’s record ownership type after it is created.

  1. Create the filters and download the FetchXML

Open your model-driven app for editing and open the Regional Accounts table view. Select Filters in the top right of the action bar, remove any default filters, click + Add, and set State equals Arizona. Then click Download FetchXML and open the downloaded file in Notepad.
Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

Repeat this for each state (Georgia, Alaska, and California), so you have one FetchXML file per state.

  1. Create a Record Filter

A record filter is the security predicate that decides which rows a user can access. In your solution, select

+ New > More > Other > Record Filter.

Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

  • Display name: Arizona
  • Unique name: Filter_Arizona
  • FetchXML: Paste the FetchXML you downloaded for Arizona

Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

Click Save & close and repeat for the other states.

<fetch version="1.0" mapping="logical" savedqueryid="47b740f5-58f4-4c59-bfd2-b9caa0df0086" no-lock="false" distinct="true">

<entity name="cr656_regionalaccounts">

<attribute name="statecode"/>

<attribute name="cr656_regionalaccountsid"/>

<attribute name="cr656_name"/>

<attribute name="createdon"/>

<order attribute="cr656_name" descending="false"/>

<attribute name="cr656_state"/>

<attribute name="cr656_industry"/>

<attribute name="modifiedby"/>

<attribute name="cr656_contactperson"/>

<attribute name="createdby"/>

<filter type="and">

<condition attribute="statecode" operator="eq" value="0"/>

<condition attribute="cr656_state" operator="eq" value="2"/>

</filter>

</entity>

</fetch>

Note: The unique name can’t contain spaces. A name like “Filter Arizona” fails with the error “Export key attribute must begin with a letter and only consist of alpha-numeric and _.{}! characters”. Use underscores instead, for example Filter_arizona.

  1. Create an Entity Record Filter

An entity record filter links each record filter to the table. In your solution, select

+ New > More > Other > EntityRecordFilter and enter:
Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

  • Name: FilterArizona
  • Record Filter: Arizona
  • Related Entity: The logical name of the table, for example cr656_regionalaccounts

Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

Click Save & close, repeat for each state, and then publish all customizations.

Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

Note: Create the table, record filters, and entity record filters in the same environment where you will edit the security role. If they are in a different environment, the filters won’t show up in the role.

  1. Create a security role and grant the filter

In the Power Platform admin center, go to your environment, then Settings > Users + permissions > Security roles > + New role. We created a role named Arizona Role.
Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

Open the role, find the Regional Accounts table, and on the Read privilege select the Arizona filter instead of None or All Records. If you want users to create, edit, or delete records, you can grant the filter on those privileges as well. Click Save + close.

Create one role per state in the same way.

Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

  1. Assign the role to users

Select a user, click Manage security roles, and assign the matching role: California Role to the California salesperson and Arizona Role to the Arizona salesperson.

Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

The result

When the Arizona salesperson opens the Regional Accounts view, only accounts with State = Arizona appear. The Alaska salesperson sees only Alaska accounts. The administrator sees all accounts because of the global All records permission.

Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

[ Admin view with all records]

Restrict Dataverse Record Access by Column Value Using Filtered Record Ownership

Things to keep in mind

  • It’s a preview feature, so it isn’t meant for production use yet.
  • No record owner: filtered table records can’t be shared or assigned.
  • Performance: every query applies the filter permissions, so design your filters efficiently.
  • Existing tables: you can create record filters on existing user-owned or organization-owned tables, but a table’s ownership type can’t be changed later.
  • Virtual tables: filter permissions don’t work with external virtual tables yet.

Conclusion

Managing record access across different teams doesn’t have to mean creating complicated ownership structures or manually sharing records.

With Filtered Record Ownership, you can use column values to define which records users can access. In our example, each salesperson sees accounts belonging to their assigned state, while administrators retain access to all records.

The biggest advantage is that access rules apply automatically. When a new account is added with a matching State value, it falls under the corresponding filter without requiring manual sharing or reassignment.

Beyond regional sales teams, this approach can also help manage access to bank branch records, hospital department data, HR records by office location, and other scenarios where access depends on a specific field value.

Since the feature is still in preview, test it in a development or sandbox environment before considering it for your business applications.

Frequently Asked Questions

What is filtered record ownership in Dataverse?

It is a row-level security feature, currently in preview, that grants users access to records based on filters on column values instead of record owners.

Can filtered record ownership tables have a record owner?

No. These tables have no owner, so records can’t be shared or assigned to an individual. The Created By column only tracks who created the record.

Can I use filters on an existing table?

Yes. You can create record filters for existing user-owned or organization-owned tables. A new table is needed only if you want the filtered (no owner) ownership type.

Can I change an existing table to filtered record ownership?

No. A table’s record ownership type can’t be changed after it is created.

Why can’t I see the filter in my security role?

The record filters and entity record filters probably aren’t in the same environment as the role, or the customizations haven’t been published. Check both, then reopen the role.

Does filtered record ownership affect performance?

Yes. Filter permissions apply to every query, so an efficient data model and well-designed filters help avoid performance problems.

Category: Dataverse Technical Tags:

About Sam Kumar

Sam Kumar is the Vice President of Marketing at Inogic, a Microsoft Gold ISV Partner renowned for its innovative apps for Dynamics 365 CRM and Power Apps. With a rich history in Dynamics 365 and Power Platform development, Sam leads a team of certified CRM developers dedicated to pioneering cutting-edge technologies with Copilot and Azure AI the latest additions. Passionate about transforming the CRM industry, Sam’s insights and leadership drive Inogic’s mission to change the “Dynamics” of CRM.