Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more

Reply
royclack
New Member

Fabric Warehouse - logicalid(.platform file) is different when branching out workspaces - why? how?

When branching out a workspace under source control to feature workspace and the orginiating workspace has a Fabric Warehouse the logicalId in the .platform file is not the same after the feature branch workspace has source control change (they happen anyway) committed. This cause issues in being able to manage merging changing back from the feature workspace. This does not seem to be the case for other item types such as Notebooks where the logicalid is the same accross the orginating workspace and the feature branch workspace.

Is this the expected behaviour and if so why? 

 

It appears we may need to not commit any warehouse changes to avoid misalligned logicalid in the feature workspace and then download a database project and progress changes in a very unconventional manner.

 

Does anyone have any suggestions to provide insight on alternative approaches?

 

Fabric Warehouse logicalId: (string) An automatically generated cross-workspace identifier representing an item and its source control representation. It appears this is not the case when branching out to feature workspaces for fabric warehouse - why not?

1 ACCEPTED SOLUTION
v-hashadapu
Community Support
Community Support

Hi @royclack , Thank you for reaching out to the Microsoft Community Forum.

 

Yes, the logical ID mismatch for Fabric Warehouses when branching to a feature workspace is expected behaviour due to how Fabric provisions Warehouses as new runtime instances with compute/storage backing in each workspace. Unlike Notebooks, which retain their logical Id as simple definitions, Warehouses generate a new logical Id in the feature workspace, causing merge issues when committing changes via the. platform file. This happens because Fabric treats Warehouses as stateful, managed SQL databases, not just portable artifacts.

 

To work around this, avoid committing Warehouse changes directly from the feature workspace, use a SQL database project to manage schema changes locally, committing them to Git and syncing back to the originating workspace and consider deployment pipelines for a more robust lifecycle.

 

If this helped solve the issue, please consider marking it 'Accept as Solution' so others with similar queries may find it more easily. If not, please share the details, always happy to help.
Thank you.

View solution in original post

3 REPLIES 3
royclack
New Member

Thankyou, it's interesting how things are evolving...overtime...and seeing this blog which is perhaps lakehouse centric Optimizing for CI/CD in Microsoft Fabric | Microsoft Fabric Blog | Microsoft Fabric

As seperate point we're driving our metadata from outside the Fabric ecosystem using SQL and have not adopted Fabric SQL. I will check-out Fabric SQL in case it works similarly to a Warehouse. We have a Lakehouse/Warehouse setup currently so this is our long-term area of interest too.


Hi @royclack , Thank you for reaching out to the Microsoft Community Forum.

 

One thing that might help is starting with your Warehouse schema changes in a local SQL environment, something like SSMS or Azure Data Studio. It gives you a safe way to test and validate your updates without dealing with workspace-specific issues in Fabric. Since you're already driving metadata from outside Fabric, this keeps things consistent with your current process.

 

You might also want to take a look at the Fabric SQL Endpoint. It gives you a unified T-SQL layer over both Lakehouses and Warehouses, which could make your external SQL workflows a lot smoother. It doesn’t replace a Warehouse, but depending on how you're querying and managing metadata, it could help reduce how often you need to touch the Warehouse runtime directly.

 

And finally, for deployment, you could set up environment-specific SQL scripts (for dev, test, prod) and use something like GitHub Actions to run them selectively as part of your CI/CD. That way, you're keeping the schema logic outside of Fabric’s runtime, which makes your deployments more predictable and easier to manage across workspaces.

 

If this helped solve the issue, please consider marking it 'Accept as Solution' so others with similar queries may find it more easily. If not, please share the details, always happy to help.
Thank you.

v-hashadapu
Community Support
Community Support

Hi @royclack , Thank you for reaching out to the Microsoft Community Forum.

 

Yes, the logical ID mismatch for Fabric Warehouses when branching to a feature workspace is expected behaviour due to how Fabric provisions Warehouses as new runtime instances with compute/storage backing in each workspace. Unlike Notebooks, which retain their logical Id as simple definitions, Warehouses generate a new logical Id in the feature workspace, causing merge issues when committing changes via the. platform file. This happens because Fabric treats Warehouses as stateful, managed SQL databases, not just portable artifacts.

 

To work around this, avoid committing Warehouse changes directly from the feature workspace, use a SQL database project to manage schema changes locally, committing them to Git and syncing back to the originating workspace and consider deployment pipelines for a more robust lifecycle.

 

If this helped solve the issue, please consider marking it 'Accept as Solution' so others with similar queries may find it more easily. If not, please share the details, always happy to help.
Thank you.

Helpful resources

Announcements
MarchFBCvideo - carousel

Fabric Monthly Update - March 2025

Check out the March 2025 Fabric update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

Find out what's new and trending in the Fabric community.

"); $(".slidesjs-pagination" ).prependTo(".pagination_sec"); $(".slidesjs-pagination" ).append("
"); $(".slidesjs-play.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-stop.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-pagination" ).append(""); $(".slidesjs-pagination" ).append(""); } catch(e){ } /* End: This code is added by iTalent as part of iTrack COMPL-455 */ $(".slidesjs-previous.slidesjs-navigation").attr('tabindex', '0'); $(".slidesjs-next.slidesjs-navigation").attr('tabindex', '0'); /* start: This code is added by iTalent as part of iTrack 1859082 */ $('.slidesjs-play.slidesjs-navigation').attr('id','playtitle'); $('.slidesjs-stop.slidesjs-navigation').attr('id','stoptitle'); $('.slidesjs-play.slidesjs-navigation').attr('role','tab'); $('.slidesjs-stop.slidesjs-navigation').attr('role','tab'); $('.slidesjs-play.slidesjs-navigation').attr('aria-describedby','tip1'); $('.slidesjs-stop.slidesjs-navigation').attr('aria-describedby','tip2'); /* End: This code is added by iTalent as part of iTrack 1859082 */ }); $(document).ready(function() { if($("#slides .item").length < 2 ) { /* Fixing Single Slide click issue (commented following code)*/ // $(".item").css("left","0px"); $(".item.slidesjs-slide").attr('style', 'left:0px !important'); $(".slidesjs-stop.slidesjs-navigation").trigger('click'); $(".slidesjs-previous").css("display", "none"); $(".slidesjs-next").css("display", "none"); } var items_length = $(".item.slidesjs-slide").length; $(".slidesjs-pagination-item > button").attr("aria-setsize",items_length); $(".slidesjs-next, .slidesjs-pagination-item button").attr("tabindex","-1"); $(".slidesjs-pagination-item button").attr("role", "tab"); $(".slidesjs-previous").attr("tabindex","-1"); $(".slidesjs-next").attr("aria-hidden","true"); $(".slidesjs-previous").attr("aria-hidden","true"); $(".slidesjs-next").attr("aria-label","Next"); $(".slidesjs-previous").attr("aria-label","Previous"); //$(".slidesjs-stop.slidesjs-navigation").attr("role","button"); //$(".slidesjs-play.slidesjs-navigation").attr("role","button"); $(".slidesjs-pagination").attr("role","tablist").attr("aria-busy","true"); $("li.slidesjs-pagination-item").attr("role","list"); $(".item.slidesjs-slide").attr("tabindex","-1"); $(".item.slidesjs-slide").attr("aria-label","item"); /*$(".slidesjs-stop.slidesjs-navigation").on('click', function() { var itemNumber = parseInt($('.slidesjs-pagination-item > a.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); });*/ $(".slidesjs-stop.slidesjs-navigation, .slidesjs-pagination-item > button").on('click keydown', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); var itemNumber = parseInt($('.slidesjs-pagination-item > button.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); }); $(".slidesjs-play.slidesjs-navigation").on('click', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); }); $(".slidesjs-pagination-item button").keyup(function(e){ var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); $(".slidesjs-stop.slidesjs-navigation").trigger('click').blur(); $("button.active").focus(); } }); $(".slidesjs-play").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-stop").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-play")) { $(".slidesjs-stop").focus(); } } }); $(".slidesjs-stop").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-play").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-stop")) { $(".slidesjs-play").focus(); } } }); $(".slidesjs-pagination-item").keydown(function(e){ switch (e.which){ case 37: //left arrow key $(".slidesjs-previous.slidesjs-navigation").trigger('click'); e.preventDefault(); break; case 39: //right arrow key $(".slidesjs-next.slidesjs-navigation").trigger('click'); e.preventDefault(); break; default: return; } $(".slidesjs-pagination-item button.active").focus(); }); }); // Start This code is added by iTalent as part of iTrack 1859082 $(document).ready(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); $("#tip2").attr("aria-hidden","true").addClass("hidden"); $(".slidesjs-stop.slidesjs-navigation, .slidesjs-play.slidesjs-navigation").attr('title', ''); $("a#playtitle").focus(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").mouseover(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").blur(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#playtitle").mouseleave(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#play").keydown(function(ev){ if (ev.which ==27) { $("#tip1").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); $("a#stoptitle").focus(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").mouseover(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").blur(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").mouseleave(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").keydown(function(ev){ if (ev.which ==27) { $("#tip2").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); }); // End This code is added by iTalent as part of iTrack 1859082