Your Object IDs Have No Excuse Now – Ninja Comes to CI/CD

  • Reading time:2 mins read

AL Object ID Ninja is now available as a GitHub Action and an Azure DevOps Pipeline Task. It scans your AL repository during CI/CD and fails the build if it finds any object IDs, field IDs, or enum value IDs that aren’t tracked by the Ninja backend. No more spreadsheets, no more “we’ll coordinate manually”, no more conflicts surfacing during deployment.

Multi-app repos and app pools are supported automatically.

Continue ReadingYour Object IDs Have No Excuse Now – Ninja Comes to CI/CD

When GUIDs Collide: The App ID Problem Nobody Expected

  • Reading time:6 mins read

You know what’s supposed to be unique? Snowflakes. Fingerprints. And GUIDs.

A GUID (Globally Unique Identifier) is mathematically designed to be so astronomically unique that if you generated one hundred billion GUIDs per second, you’d still have a better chances of being struck by lightning twice and then winning the lottery, all on the same day, than generating a duplicate.

And yet, here we are. Talking about duplicate App IDs in Business Central.

Continue ReadingWhen GUIDs Collide: The App ID Problem Nobody Expected

AL Object ID Ninja: Please Register Your Intent

  • Reading time:2 mins read

Over the past four years, AL Object ID Ninja has quietly kept thousands of teams out of conflict trouble. To plan the next chapter responsibly, I need a simple signal from you.

What I’m asking

If you intend to keep using the hosted Ninja backend after 1 January 2026, please register your interest here:
👉 alid.ninja

This is not a subscription. It’s a no-commitment way to:

  • Lock a 35% lifetime “super-early-bird” discount
  • Help me finalize fair pricing and plan my activities in the transition period
  • Potentially lower the final prices for everyone (more committed teams → better economies of scale)

Your two paths (both remain available)

  • Stay on the hosted backend (premium): zero setup, zero maintenance, zero hassle (just like in the past) + new features + support + the upcoming management portal + mobile app.
  • Run your own backend: Ninja remains open to self-host on your Azure subscription, at your pace, under your control, but with you carrying the infrastructure cost, maintenance costs, and costs of supporting users who get stuck.

Why this matters now

To operate a reliable, supported, and evolving hosted service, I need to know roughly how many teams plan to stay. If there’s sufficient interest, I’ll proceed and continue investing in the hosted platform. If there isn’t, the shared backend will be shut down on 31 December 2025, and all teams will continue with their own deployments.

This is not pressure—just transparency. Running Ninja at scale carries real cost, and I want to make the right decision with you, not for you.

A straightforward pledge

My goal is simple: keep Ninja effortless for those who prefer a smooth experience on a managed service, and keep it open for those who prefer to run it themselves. If you’ve found value in Ninja and want the hosted option to continue, please raise your hand now:

👉 alid.ninja

Thank you for helping me plan wisely—and for everything you’ve built with Ninja so far.

Continue ReadingAL Object ID Ninja: Please Register Your Intent

End of free backend for AL Object ID Ninja

  • Reading time:4 mins read

EDIT: Click here to let me know if you intend to stay with Ninja premium backend and lock in your lifetime 35% discount.

I hoped I would never have to write this post.

When I first released AL Object ID Ninja back in September 2021, my dream was simple — to give every Business Central developer a painless way to manage object IDs, forever free.
And for four years, that dream held true.

Ninja has quietly prevented hundreds of thousands of conflicts across thousands of teams. It became the invisible backbone of smooth collaboration for our community — always there, always free.

But as Ninja grew, so did the infrastructure behind it. What once cost a few peanuts now costs a small fortune every month. To keep it running fast, reliable, and evolving, it’s time for Ninja to take its next step — from a free community service to a sustainable, premium platform.

What’s changing — and when

You can continue using Ninja for free until 31 December 2025.
After that, you’ll have two options:

  1. Self-host Ninja on your own Azure subscription — and keep it free forever.
  2. Subscribe to the new Premium Ninja backend — and enjoy a hassle-free, continuously improving experience.

Either way, you stay in control.

Read on if you want to learn more.

Continue ReadingEnd of free backend for AL Object ID Ninja

AL Object ID Ninja logical ranges overview

  • Reading time:2 mins read

Long time no see, eh? 😳 I won’t offer no excuses, but I have been plenty busy with things that you’ll benefit in some way or another, far more than you’d benefit from me writing here. So, let’s jump straight into it.

First things first. I just can’t express my gratitude to all of you who use it every day. Just a few numbers for you to feel the scale of it. At the moment of writing this post, there have been:

  • 17.382 installs
  • 5.369 repositories managed by Ninja
  • More than 3.500 users actively use Ninja every day
  • More than 4.700 users actively use Ninja every week
  • More than 3.300 repositories being worked in every day.

This is huge. Thank you all for finding Ninja an obviously indispensable tool to manage your object ID assignments.

Now back to the point of this post. This week there have been a couple of releases, and one of the most important new features is logical ranges. That’s the feature that allows you to assign object IDs from ranges that do not necessarily match those in your app.json file. There are several use cases for this, and the feature is quite flexible.

Today, I did another live session where I presented this feature. If you want to learn about how it works and what good it is for, check it out:

That’s it. Thanks for using Ninja, and I am looking forward to hearing your feedback.

What’s the next feature you’d like Ninja to include?

Continue ReadingAL Object ID Ninja logical ranges overview

AL Object ID Ninja Scheduled Maintenance Announcement: October 9 at 19:00 CET

  • Reading time:3 mins read

For all of you using AL Object ID Ninja, please read this post. There will be scheduled maintenance of AL Object ID Ninja back end on October 9, 2021, at 19:00 CET (UTC +2). The expected downtime is 30 minutes. During the maintenance, you will not be able to use AL Object ID Ninja to assign object IDs.

Behavior during the maintenance

During the maintenance, the back end will send the 503 Service Unavailable response to all requests. When AL Object ID Ninja receives this status, it will show a message like this:

What is this maintenance about?

In my previous post, I explained the reasons for the maintenance that is going to happen this week. After weighing in and out several approaches, I have come up with a plan slightly different than what I announced in the previous post. So, during this maintenance, the following is going to happen:

  • All existing app information will be moved from a Standard-tier Block Blob container to a Premium-tier Block Blob container. This will provide a slightly better performance, and will reduce the costs by roughly 47%. Standard-tier costs less for volume of stored data, but more per transaction, and since Ninja is using low storage volume with high transaction count, the cost reduction will be substantial.
  • All blobs belonging to an individual app will be consolidated into a single app blob. In “v1” app information is spread around multiple individual blobs which allows slightly faster performance and lower access concurrency. However, benchmarking has shown that there is no substantial performance benefit to existing approach as compared to single-blob-per-app approach. Furthermore, since the back end already correctly handles concurrent access and since chances of actual concurrent write are microscopical, not much is gained by spreading app data across multiple blobs. The overall benefit of having a single blob is substantial, as there will be far less blob read operations as compared to the current situation.
  • After the migration is completed, a new version of back end will be deployed that will return the 410 Gone response to all “v1” requests. This version will have “v2” endpoints available.
  • When the migration starts, a new version of AL Object ID Ninja (2.0.0) will be deployed that will access new “v2” endpoints.

What do you need to do?

After the maintenance completes, you should update AL Object ID Ninja extension as soon as possible. For most of you, this will happen automatically. To make sure everything is ready, verify that AL Object ID Ninja is updated to 1.2.8 in your instance of Visual Studio Code before you first start working after the maintenance.

IMPORTANT (if you have your own back end)

Some of you are using your own back end. I will push the new version of the back end to GitHub latest on Thursday evening. Please keep an eye on the repository. When you see a commit about back end “v2”, pull the changes and deploy them at any point after the scheduled maintenance starts, but before your developers start using AL Object ID Ninja (probably on Monday morning).

Continue ReadingAL Object ID Ninja Scheduled Maintenance Announcement: October 9 at 19:00 CET

Important Announcement for AL Object ID Ninja

  • Reading time:13 mins read

If you are using AL Object ID Ninja already then you may want to read this post. If not, then first install AL Object ID Ninja, then read this post 😀

Since its launch three weeks ago, this extension has exploded far beyond my expectations. As of this morning, Ninja has been installed 5.916 times, there are 2.047 Business Central apps that use Ninja to assign object IDs, and there are currently around 13.37 million blob read and write operations per week performed on my Azure Storage and around 6.75 million Azure Function calls per day. These numbers nearly doubled in the past ten days, and while there is a definite cap to how far this can grow, I expect all of this to grow at a steady rate for the foreseeable future.

Which brings me to the important part. AL Object ID Ninja is free, and it will stay free. Right now there is absolutely no fear of it even remotely approaching the limit I’ve set (at the moment, Ninja is costing on average €1 per day against my €125 monthly allowance that comes with my Visual Studio subscription, so there is aaaaaa lot of room to grow. However, since Ninja grew beyond my wildest dreams already, and since I know it’s far from hitting the roof any time soon, if nothing changes, in a couple of months it could hit a €3 per day threshold that would make me pretty uncomfortable.

That said, I have been working on some important back-end improvements to keep costs (much) lower while providing even more functionality. The reason why I went there wasn’t costs at all – it was actually some new functionality I wanted to add that I realized would drive costs a bit up, so I had to do something.

All of this is to finally announce this important announcement: at some point during the weekend, there will be a major upgrade to the AL Object ID Ninja back end, and over the course of the next week there will be two new versions of AL Object ID Ninja extension. The old extension will not work with new back end, and new extension will not work with old back end.

That’s it. If you care about nitty-gritty details, then read on.

Continue ReadingImportant Announcement for AL Object ID Ninja

AL Object ID Ninja v1.2.0 – plus some Azure lessons learned

  • Reading time:17 mins read

First things first. Yesterday evening, I’ve released AL Object ID Ninja v1.2.0 and there is really nothing new that you’d care about, functionally speaking. Check the changelog if you will, but trust me, you won’t be really blown away. But yes, unfortunately, it did merit a full minor version rather than just a patch number increase.

That’s it. If you only care about what’s new, then this is where you stop reading. But if you care to know what kind of a rocky ride I’ve had yesterday wrestling with Azure and fighting like mad to keep this service free, then read on.

I won this fight, by the way 😎

Continue ReadingAL Object ID Ninja v1.2.0 – plus some Azure lessons learned