SDK Compatibility Issue - VideoOS.Platform.FQID.op_Equality() Method Not Found When Using 2024 SDK Against 2021 VMS

I’m reaching out regarding a compatibility issue we’re experiencing with our iSentry application deployed as a Milestone MIP plugin.

Issue Description

When our plugin, built against the 2024 SDK, attempts to connect to a Milestone VMS running the 2021 version, the Management Client crashes upon accessing our plugin’s configuration tab.

The following error is displayed:

Method not found: Boolean VideoOS.Platform.FQID.op_Equality(VideoOS.Platform.FQID, VideoOS.Platform.FQID)

Analysis

We believe this occurs because the VideoOS.Platform.FQID.op_Equality() method is not present in the 2021 SDK, but our application was compiled against the 2024 SDK where this method appears to exist. This creates an incompatibility at runtime when the plugin tries to execute code that relies on this operator.

Context

We’re working in a mixed-version environment where we need to support both older (2021) and newer (2025) Milestone VMS installations. Our current build approach uses a single plugin binary compiled against the 2024 SDK.

Questions

  1. Is there a recommended approach for supporting multiple Milestone VMS versions with a single MIP plugin?
  2. Should we maintain separate builds compiled against each target SDK version? This is really difficult for us because it will mean to maintain two main versions.
  3. Could you help clarify when the op_Equality() operator was introduced to the FQID class? This would help us understand the scope of potential compatibility issues.
  4. Are there any guidelines or documentation on SDK compatibility across different Milestone releases that we should review?

We appreciate any guidance you can provide on the proper approach for cross-version compatibility.

Thank you for your time.

Pablo.

  1. In general we strive to ensure cross-version compatibility but in this case we unfortunately failed. Also in this case we decided not to roll back the change as we wanted to keep the == operator around and there is a fairly easy work-around as described by another user here (simply use .Equals() instead of ==): https://developer.milestonesys.com/s/question/0D53X0000AlFw6ESQS/method-not-found
  2. No this should not be necessary unless you introduce usage of something that were not available in previous versions.
  3. It was introduced in 2021 R3
  4. No. As mentioned above we strive to ensure compatibility.