oData Query Issues
Gimmal Records recently updated to a newer version of a Microsoft ODataLib dependency that directly supports the Gimmal Records OData API feature used by Power BI and other 3rd party applications (Excel, Tableau, etc). This newer version of the Microsoft ODataLib dependency produces a more complex OData metadata URL format than Gimmal Records previously did. While this new format is aligned with the OData specification and works in some scenarios, we have found specific scenarios where the 3rd party application does not work as expected.
As a result, there is an unexpected behavior occurring in Power BI when refreshing data sources from Gimmal Records. The issue happens when certain OData queries using the OData $expand operator in the URL connect with Gimmal Records and Power BI does not correctly handle the more complex OData response.
The workaround is to use a more verbose OData query URL in Power BI so that it can handle the response appropriately:
Description | Old URL | New URL |
Destruction Certificate Approvals | ODataAPI/destructioncertificates?$expand=approvals | ODataAPI/destructioncertificates?$select=*&$expand=approvals($select=*) |
Destruction Certificate Content | ODataAPI/destructioncertificates?$expand=content | ODataAPI/destructioncertificates?$select=*&$expand=content($select=*) |
Legal Hold Rules | ODataAPI/legalcases?$expand=holdrules | ODataAPI/legalcases?$select=*&$expand=holdrules($select=*) |
Lifecycle Phases | ODataAPI/lifecycles?$expand=phases | ODataAPI/lifecycles?$select=*&$expand=phases($select=*) |
Record Class Approval Groups And Users | ODataAPI/recordclasses?$expand=approvalgroups($expand=users) | ODataAPI/recordclasses?$select=*&$expand=approvalgroups($select=*;$expand=users($select=*)) |
Record Class Classification Rules | ODataAPI/recordclasses?$expand=classificationrules | ODataAPI/recordclasses?$select=*&$expand=classificationrules($select=*) |
Trigger Rules | ODataAPI/triggers?$expand=triggerrules | ODataAPI/triggers?$select=*&$expand=triggerrules($select=*) |
It is possible to combine related entities within the same OData query URL. For example, to get Record Class Approval Groups & Users, and Record Class Classification Rules you need to use the following OData query URL:
ODataAPI/recordclasses?$select=*&$expand=approvalgroups($select=*;$expand=Users($select=*)),classificationrules($select=*)