This is a new licensing model to deal with environments such as AWS where the hosted servers where they constantly change their machine ID (which is tied to the licence) and as a result the licence activated becomes invalid; which has becomes a problem for developers to re-activate the licence on their customers' system.

To try to avoid such nightmare and reduce the amount of admin and paper work, we have set up a new way of how licence and licence activation is controlled and invoiced.

To start with, you will be given a special concurrent licence key “XXXX-YYYY-ZZZZ”. This licence key will allow up to N concurrent systems to obtain licences from our online licence server. The licence will be held in system memory so if the application is shut down or the machine is shut down it will lose the licence and a new one will need to be obtained before any of the DicomObjects functions are called.

The licence key will also control how long a licence is valid for.

Both the maximum number of concurrent licences and the validity of the licence shall be agreed between you and us before the licence key is issued.

And to implement the concurrent licence is straightforward:

DicomObjects.NET

Application Start-up

// set up the event that fires before the DicomLicense expires
DicomLicense.LicenseExpirationEvent += DicomLicense_LicenseExpirationEvent;

// if no licence found, get a concurrent licence
if (DicomLicense.CurrentLicense == null)
{
	string result;
	DicomLicense l = DicomLicense.GetRamLicense("XXXX-YYYY-ZZZZ", "Customer Info", out result);
}

Application Shut-down

// delete the concurrent licence on application exit
// also releases it back to the licence server, so someone else could get a concurrent licence
DicomLicense.RemoveRamLicense();

On License Expiring

private void DicomLicense_LicenseExpirationEvent(TimeSpan remaining)
{            
	string result;
	// Renew the Concurrent License
	DicomLicense l = DicomLicense.GetRamLicense("XXXX-YYYY-ZZZZ", "Customer Info", out result);
}

So it’s fairly straightforward to set it up in user code and not difficult to understand the logic.

For instance:

  • You use a licence key to activate a licence that allows up to 3 concurrent licences, on machine_A, machine_B and machine_C
  • Machine_D cannot use the same key to get a licence while A, B and C are in use, and it will get a “maximum allowed concurrent licenses reached” error
  • User shuts down the application or Machine_A, its licence is released back to our licence server. Machine_D now can get a licence

Note, without anything else, the concurrent licensing model requires all systems to have internet access to talk to our online licence server.

For offline machines, we can help you build your internal concurrent licence server that will act as a router between the offline machines and our online licence server.