Dashbord not able view in userform table

Sargunan Prakash 0 Reputation points
2026-10-15T13:20:31.6033333+00:00

I have a user-created personalized dashboard in Dynamics 365 CRM, as shown in the attached screenshots.

The dashboard is available under My Dashboards and opens correctly in CRM.

I checked the following Dataverse tables using SQL 4 CDS:

  • userform
  • systemform
  • userquery
  • savedquery

However, I cannot find this personalized dashboard in any of these tables by dashboard name or dashboard GUID.

The dashboard URL contains pagetype=dashboard and a dashboard ID.

**Which Dataverse table stores these user-created personalized dashboards, and how can I retrieve them using SQL 4 CDS or the Dataverse API?

**User's image

Microsoft 365 and Office | Development | Other
0 comments No comments

2 answers

Sort by: Most helpful
  1. Demi Nguyen 2,510 Reputation points Independent Advisor
    2026-10-15T13:54:27.71+00:00

    Hello Sargunan Prakash,

    Thank you for providing the detailed information.

    This forum mainly focuses on Microsoft 365 and Office-related products, so the level of expertise available here for scenarios involving Dynamics 365 CRM, Microsoft Dataverse, SQL 4 CDS, and the Dataverse Web API may be limited.

    For more specialized guidance, I recommend posting your question in the dedicated Microsoft Dynamics 365 Community: Find Answers | Microsoft Dynamics 365 Community

    User's image

    That community includes professionals and specialists with deeper experience in Dynamics 365 and Dataverse development. They will be better placed to help investigate how personalized dashboards are stored and retrieved through SQL 4 CDS or the Dataverse API.

    When creating the new post, I recommend including the screenshots, the dashboard type, the tables you have already checked, and the SQL queries or API requests you tested. Please remove any tenant IDs, environment URLs, user details, and other sensitive information before posting.

    Thank you for your understanding. I hope this helps direct your question to the most appropriate community.

    Kind regards,

    Was this answer helpful?

    0 comments No comments

  2. AI answer

    2026-10-15T13:21:38.2466667+00:00

    A personalized dashboard is stored in the Dataverse userform table; because your dashboard is visible in the app but absent from SQL 4 CDS, query userformid with type = 0 under the same user identity that owns or can access the dashboard.

    The screenshot’s Assign action is also consistent with a user-owned dashboard: user dashboards can be assigned or shared, while organization-owned dashboards are stored in systemform and cannot be assigned or shared.^1^

    SQL 4 CDS query

    Run this first without a name filter:

    SELECT
        userformid,
        name,
        type,
        ownerid,
        owneridname,
        owninguser,
        owningteam,
        createdon,
        modifiedon
    FROM userform
    WHERE type = 0
    ORDER BY name;
    

    For userform, userformid is the primary ID, name is the primary name, and type = 0 means Dashboard; type = 103 means Power BI Dashboard.^2^

    Then query the GUID from the dashboard URL directly, removing URL encoding and braces if present:

    SELECT
        userformid,
        name,
        type,
        owneridname,
        formxml,
        formjson
    FROM userform
    WHERE userformid = '00000000-0000-0000-0000-000000000000';
    

    The dashboard layout is held in formxml or formjson, depending on the dashboard representation.^2^

    userquery and savedquery contain personal and system views/queries, not the dashboard record itself. Those views may be referenced by components inside the dashboard’s layout, but searching them for the dashboard ID is not expected to return the dashboard.

    Dataverse Web API

    The entity-set name is plural: userforms. Retrieve the URL’s dashboard ID directly:

    GET [Organization URI]/api/data/v9.2/userforms(00000000-0000-0000-0000-000000000000)?$select=userformid,name,type,_ownerid_value,formxml,formjson
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Or list ordinary personalized dashboards:

    GET [Organization URI]/api/data/v9.2/userforms?$select=userformid,name,type,_ownerid_value,createdon,modifiedon&$filter=type eq 0&$orderby=name
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Microsoft documents GET /userforms(<userformid>) and GET /userforms as the supported retrieve operations.^2^ Dataverse Web API queries support $select, $filter, and $orderby against an entity-set collection.^3^

    If both queries return no row

    The userform table is user-owned, and another user can view a dashboard only according to its access privileges.^1^ SQL 4 CDS and the Web API therefore return records available to their connection identity; they do not provide a separate unrestricted dashboard catalog.

    Check these differences between the app and SQL 4 CDS/API sessions:

    • Environment: both connections must target the same Dataverse environment.
    • Identity: SQL 4 CDS may be connected as an administrator, application user, or another interactive user rather than the dashboard owner.
    • Record access: the personal dashboard must be owned by or shared with the querying principal. A community case reports the same zero-row behavior when retrieving another user’s dashboards without the necessary access.^4^

    If an integration must query as the owner, Dataverse Web API supports impersonation using the CallerObjectId header:

    GET [Organization URI]/api/data/v9.2/userforms?$select=userformid,name,type&$filter=type eq 0
    CallerObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
    Accept: application/json
    OData-MaxVersion: 4.0
    OData-Version: 4.0
    

    Use the owner’s Microsoft Entra object ID, not the systemuserid. The calling account needs the Act on Behalf of Another User privilege, and effective permissions are the intersection of the caller’s and impersonated user’s privileges.^5^

    If a direct GET userforms(<dashboard-id>) still returns not found while the same identity can open it in the same environment, capture the complete dashboard URL and the Web API HTTP status/body. That will distinguish an ID mismatch from record-level access filtering.


    References

    1. Analyze data with dashboards
    2. User Dashboard (UserForm) table/entity reference (Microsoft Dataverse)
    3. Use OData to query data
    4. How to fetch user owned dashboards for a different user???
    5. Impersonate another user by using the Web API
    AI-generated content may be incorrect. Read our transparency notes for more information.

    Was this answer helpful?

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.