Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Good day,
Just a note, I did reply to a topic that had a relatively similar Subject, however it was old and I thought I would create a new Post, as I am not sure how often old topics are checked by the moderators of the forum.
I have attempted to programatically perform a shortcut creation in a Lakehouse, that will point to a Dataverse entity in a Fabric Notebook using the Fabric API, however I can not make it work.
Therefore, my question is, has the support for shortcut creation has already been added to the API or not yet?
Just in case, I will add some context to my case. I have created a 'Link to Microsoft Fabric' from my Dataverse environment to a Lakehouse in Fabric. I have removed 1-2 tables in Fabric, thus removing the shortcuts. I want now to add the shortcuts back, but I need to do it programatically.
This is the code that I am using to call the API:
entity = 'actioncard'
DATAVERSE_END_URL = 'https://myorgxxx.crm4.dynamics.com'
url = f"https://api.fabric.microsoft.com/v1/workspaces/{WORKSPACE_ID}/items/{LAKEHOUSE_ID}/shortcuts"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
# create shortcuts for a list of entities
for entity in MISSING_ENTITIES:
print(entity)
payload = {
"name": entity,
"path": f"Tables/{entity}",
"target": {
"dataverse" : {
"deltaLakeFolder": "",
"environmentDomain": DATAVERSE_END_URL,
"tableName": f"{entity}",
"connectionId": CONNECTION_ID
}
}
}
try:
response = requests.post(url, headers=headers, json=payload)
I am getting the following 400 error:
Failed to create actioncard: 400 - {"requestId":"1534w4aa-e00a-4f05-aa9f-d4c5573456c9","errorCode":"BadRequest","moreDetails":[{"errorCode":"RequestBodyValidationFailed","message":"Shortcut target uri /actioncard:Dataverse is malformed."}],"message":"The request could not be processed due to missing or invalid information"}
If the support has been implemented but I am taking the wrong approach, please reffer to the correct documentation.
Thanks a lot in advance.
Solved! Go to Solution.
Hello guys,
With the help of a wonderful Microsoft support representative, who provided prompt and efficient assistance, we were able to identify the issues I encountered and find the appropriate solutions.
Ultimately, the correct payload should look like this:
{ "path": "Tables", "name": "{entity}", "target": { "type": "Dataverse", "dataverse": { "environmentDomain": "https://xxxxxxxxx.crm4.dynamics.com", "tableName": "{entity}_partitioned", "connectionId": "xxxxxxxxx-3bde-xxxx-xxxxx-468a4da92768", "deltaLakeFolder": "https://xxxxxxxxxxxxxxx.dfs.core.windows.net/aeth-xxxxxxxxxxxxx/CDS2/deltalake" } } }
The 'entity' in this case is the name of the Dataverse table you are attempting to create a shortcut in the Fabric Lakehouse for.
The primary issue was related to the deltaLakeFolder property, specifically its value.
This path points to the file system where Dataverse stores data in Delta Lake format - essentially a "ghost" copy of the Dataverse data, created when using the Link to Microsoft Fabric feature.
This version of the data is highly compressed due to partitioning, which is why the linked entities have the _partitioned suffix.
By default, you cannot directly access this Delta Lake location, nor is the URL or path easily obtainable.
Additionally, after linking Dataverse to Fabric, the entities created in your Lakehouse may not show all their properties when you inspect them (using the ellipsis ... > Properties).
However, there is a method to retrieve this information:
In Fabric, remove the existing shortcut to the entity in the Lakehouse.
Manually create a new shortcut: Go to your Lakehouse, select Get Data, and choose New Shortcut. Follow the prompts intuitively.
Once added, refresh the Lakehouse and locate the newly created shortcut.
Click the ellipsis (...) > Properties on the shortcut.
You will now see additional metadata available - including deltaLakeFolder, environmentDomain, tableName, connectionId, and more - which can be used when building the Fabric REST API payloads.
Tip:
Ensure that you have the correct WorkspaceId and LakehouseId (ItemId for the REST API).
Workspaces are sometimes labeled as groups and sometimes as workspaces, which can be confusing.
If unsure, navigate to your Workspace, find the Lakehouse, click Settings (via the ellipsis menu), and check the Livy endpoint, as it contains both the Workspace ID and the Lakehouse ID.
Finally, Microsoft has promised to update their official documentation based on these findings, which should help others in the future!
Good day, guys.
@v-saisrao-msft @nilendraFabric
Unfortunately, I was on medical leave starting Thursday last week and did not have a chance to try this. I will do so today or tomorrow and will most definitely come back with updates and feedback.
Hi @ElektroHulk ,
We haven’t heard back from you regarding your issue. If it has been resolved, please mark the helpful response as the solution and give a ‘Kudos’ to assist others. If you still need support, let us know.
Thank you.
Hi @v-saisrao-msft I did reply below. I still could not make it work.
Apologies, I was on medical leave for a number of days.
As I wrote in the previous comment:
It still asks for the "deltaLakeFolder" property and value. If I add the deltaLakeFolder property it is telling me it's malformed.
As far as I understand, the "deltaLakeFolder" would be useful only when creating the Link via Synapse, as it stores the entities as parquet delta tables in a an ADLS. But for "Link to Microsoft Fabric", such property might not be of much use, the 'ghost' copy of the Dataverse that is created when using this Link option is stored on Dataverse storage.
Hi @ElektroHulk,
Thank you for the clarification you're right in noting the difference between Dataverse links created via Synapse and those created through the "Link to Microsoft Fabric" experience.
At this time, it appears the Fabric REST API may not fully support programmatic shortcut creation for Dataverse tables linked via "Link to Fabric." The deltaLakeFolder parameter seems to be required by the API, but it’s likely not applicable in this scenario, which is likely causing the malformed URI error.
In this scenario I suggest you raise a support ticket here. so that they can assist you in addressing the issue you are facing.
please follow below link on how to raise a support ticket:
How to create a Fabric and Power BI Support ticket - Power BI | Microsoft Learn
Thank you.
Thank you @v-saisrao-msft I have now done so.
If I get an update on the issue from the support team, I will post it in this topic, if that's ok.
Hello guys,
With the help of a wonderful Microsoft support representative, who provided prompt and efficient assistance, we were able to identify the issues I encountered and find the appropriate solutions.
Ultimately, the correct payload should look like this:
{ "path": "Tables", "name": "{entity}", "target": { "type": "Dataverse", "dataverse": { "environmentDomain": "https://xxxxxxxxx.crm4.dynamics.com", "tableName": "{entity}_partitioned", "connectionId": "xxxxxxxxx-3bde-xxxx-xxxxx-468a4da92768", "deltaLakeFolder": "https://xxxxxxxxxxxxxxx.dfs.core.windows.net/aeth-xxxxxxxxxxxxx/CDS2/deltalake" } } }
The 'entity' in this case is the name of the Dataverse table you are attempting to create a shortcut in the Fabric Lakehouse for.
The primary issue was related to the deltaLakeFolder property, specifically its value.
This path points to the file system where Dataverse stores data in Delta Lake format - essentially a "ghost" copy of the Dataverse data, created when using the Link to Microsoft Fabric feature.
This version of the data is highly compressed due to partitioning, which is why the linked entities have the _partitioned suffix.
By default, you cannot directly access this Delta Lake location, nor is the URL or path easily obtainable.
Additionally, after linking Dataverse to Fabric, the entities created in your Lakehouse may not show all their properties when you inspect them (using the ellipsis ... > Properties).
However, there is a method to retrieve this information:
In Fabric, remove the existing shortcut to the entity in the Lakehouse.
Manually create a new shortcut: Go to your Lakehouse, select Get Data, and choose New Shortcut. Follow the prompts intuitively.
Once added, refresh the Lakehouse and locate the newly created shortcut.
Click the ellipsis (...) > Properties on the shortcut.
You will now see additional metadata available - including deltaLakeFolder, environmentDomain, tableName, connectionId, and more - which can be used when building the Fabric REST API payloads.
Tip:
Ensure that you have the correct WorkspaceId and LakehouseId (ItemId for the REST API).
Workspaces are sometimes labeled as groups and sometimes as workspaces, which can be confusing.
If unsure, navigate to your Workspace, find the Lakehouse, click Settings (via the ellipsis menu), and check the Livy endpoint, as it contains both the Workspace ID and the Lakehouse ID.
Finally, Microsoft has promised to update their official documentation based on these findings, which should help others in the future!
Good day, @v-saisrao-msft and @nilendraFabric .
Thank you very much for taking the time to help with some good advice and pointers/hints.
I will go through both your recommendations and will let you know the output afterwards.
Hi @ElektroHulk,
May I ask if you have resolved this issue? If so, please mark the helpful reply and accept it as the solution. This will be helpful for other community members who have similar problems to solve it faster.
Thank you.
Hi @ElektroHulk,
Just checking in have you had a chance to go through the suggestions we shared us?
Thank you.
Hello @ElektroHulk
try this code
entity = 'actioncard'
DATAVERSE_END_URL = 'https://myorgxxx.crm4.dynamics.com'
url = f"https://api.fabric.microsoft.com/v1/workspaces/{WORKSPACE_ID}/items/{LAKEHOUSE_ID}/shortcuts"
headers = {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
# Create shortcuts for a list of entities
for entity in MISSING_ENTITIES:
print(entity)
payload = {
"path": "Tables",
"name": entity,
"target": {
"type": "Dataverse",
"dataverse": {
"environmentUrl": DATAVERSE_END_URL,
"tableName": entity,
"connectionId": CONNECTION_ID
}
}
}
try:
response = requests.post(url, headers=headers, json=payload)
hi @nilendraFabric
Your solution did not work, unfortunately.
It still asks for the "deltaLakeFolder" property and value. If I add the deltaLakeFolder property it is telling me it's malformed.
As far as I understand, the "deltaLakeFolder" would be useful only when creating the Link via Synapse, as it stores the entities as parquet delta tables in a an ADLS. But for "Link to Microsoft Fabric", such property might not be of much use, the 'ghost' copy of the Dataverse that is created when using this Link option is stored on Dataverse storage.
Maybe I am wrong.
Hi @ElektroHulk,
Thank you for reaching out to the Microsoft Fabric Forum Community.
According to the official Microsoft documentation, creating shortcuts to Dataverse tables is supported via the Fabric REST API. However, it’s a relatively new capability, and some behaviors may still differ slightly from shortcuts created via the Fabric UI (e.g., through Power Apps or the Power Platform Admin Center).
The error you're encountering:
"Shortcut target uri /actioncard:Dataverse is malformed."
suggests there might be a structural issue in the request body — either a missing required field or a mismatch in expected values.
Here are a few areas to review while troubleshooting:
Please refer the below documents for your reference:
OneLake Shortcuts - Create Shortcut - REST API (Core) | Microsoft Learn
Unify data sources with OneLake shortcuts - Microsoft Fabric | Microsoft Learn
If this post helps, then please give us ‘Kudos’ and consider Accept it as a solution to help the other members find it more quickly.
Thank you.
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
User | Count |
---|---|
29 | |
15 | |
6 | |
6 | |
3 |
User | Count |
---|---|
48 | |
43 | |
15 | |
7 | |
6 |