Management Client crashes changing to "Remote Retrieval" tab

When switching to the “Remote Retrieval” tab of a hardware node in the XProtect Management Client, the following exception shows up in our environment:

The selected hardware node is connected, using a custom MIP driver. It seems like the default value for the maximum number of parallel connections, set by the driver `MaxParallelDevices`, conflicts with the UI of the Management Client. Values higher than 99 cannot be handled by the Client, but can be set on the driver side.

Is there any documentation on the maximum number of parallel connections that should be used? The driver SDK doesn’t indicate any limits and any integer value can be chosen.

The recovery process is rather tedious, because the entire hardware node needs to be removed and then re-added/configured.

I will report this to Milestone Development as a bug. It might be a limitation that is by design but not properly documented and handled or it might be a bug in the Management Client. I will make sure to let you know what Milestone Development finds.

For now, as a temporary workaround, make sure you do not use values higher than 99.

I appreciate the quick reply - thanks for looking into it and keeping me in the loop.

This is the feedback from Milestone Development:

Current valid values are 1 <= MaxParallelDevices <= 99. Please enforce that in your own code.

Starting from 2026R1, MIP SDK will not accept values outside of this range.

Thank you for answering.

If a Milestone XProtect instance already has a value above 99, will it limit the value? In other words, will it recover from a faulty state with 2026R1?

If you correct your driver will the Milestone XProtect instance still suffer the issue?

I had an idea that if the driver does not have the issue it would be solved for all involved parties. Is my idea wrong and the issue will still be present even if the driver is corrected?

My understanding is that a fix will make sure the value will never get wrong into the system, so please clarify if you have tested with a corrected driver and still see the issue.

That’s correct, if only the driver is updated, the exception still occurs. It seems like the values are stored in the database and the only fix right now is to remove the device and re-add it with a fixed driver.

This was tested with an XProtect 2024R2 instance.

I understand. I will get back to you after consulting Milestone Development.

Clarification of what Milestone will fix, and what you need to do in your end.

  1. MIP SDK will change in 2026R1 to prevent using any values bigger than 99. If attempted, value will default to 99.
  2. Management Client will change in 2026R1 to prevent crash. If value is already set to > 99, show 99 in user interface.
  3. You as integrator must fix your plugin (no matter which version you or your customer use).
  4. You as integrator can immediately run the following SQL script once, to purge invalid values from your customer’s DB. I strongly recommend creating a backup before doing that:
UPDATE [Surveillance].[dbo].[Hardware]
SET [Surveillance].[dbo].[Hardware].[EdgeSettings].modify('replace value of
  (
    /properties/settings/setting[name="MaxParallelDevices"]
      [xs:integer((value/text())[1]) > 99]
      /value/text()
  )[1]
  with "99"')

Depending on how you fix your driver you might want to change the script, I feel it is important you understand what it does and evaluate if the script is exactly what you want.

I hope this clarification removes any doubts you might have about the fix and how it works. Please do not hesitate if you have further questions or comments.