In this blog we will describe what the SAP Business One License API is and how you can use it in your Add-on.
With SAP Business One 2005, the License Service moved from DCOM to CORBA to avoid security issues as CORBA is not tied to Windows authentication. Due to this a License bridge to the License Service API was developed. In essence it wraps the CORBA interface which is exposed by the SAP Business One License Service with a COM wrapper.
How to install the License Bridge to access the API
Run the Setup.Exe from the COM License Bridge Setup package provided for download in the following link:
It’s important to Note that it will only work on the system where the License Service is running. Once it’s installed you can register it as a COM Server by Start -> All Programs -> SAP Business One -> Server Tools -> COM License Bridge -> Register COM License Bridge. You can also unregister it selecting Unregister COM License Bridge
How to use the COM License Bridge
1. Add a reference “SBOLicense COM Bridge 1.0 Type Library” in your Microsoft Visual Studio project
2.Declare a variable for the LicenseInfo interface
Dim lc As SBOLICENSELib.ILicenseInfo – VB
SBOLICENSELib.LicenseInfo lc = null; – C#
3.Instantiate the LicenseInfo interface:
lc = NewSBOLICENSELib.LicenseInfo – VB
lc = SBOLICENSELib.LicenseInfo(); – C#
Once this is done you can then access all the methods of the License API. You can find the full list of methods exposed in the SDK Help File.
Some examples of how to use the License Bridge
1. Retrieve the Hardware Key and Installation Number from your License Service.
Dim hk, ins as String
MsgBox(“Hardware key is ” & hk & ” and installation number is ” & ins)
2. Check if a particular user is assigned a Professional User License.
Please note bstrModule expects the SWPRODUCTNAME from the license file.
result = lc.IsUserLicensed(“manager”, “PROFESSIONAL_MSS”)
If result <> 0 Then
MsgBox(“User is licensed”)
MsgBox(“User is not Licensed”)
3. GetLicenseInfo allows you retrieve specific information from the license file.
Dim num, avail, start, dend as Integer
lc.GetLicenseInfo(“PROFESSIONAL_MSS”, num, avail, start, dend)
MsgBox(“For Addon SDK TEST you have ” & num & ” in your license file and ” & avail & ” available. License started on start ” & start & ” and expires on ” & dend)
4. GetLoggedinUsers returns a list of users currently logged into Business One – note this is via an XML file.
Dim xmlDoc As New Xml.XmlDocument
Dim productNodes As Xml.XmlNodeList
Dim ProductNode As Xml.XmlNode
Dim baseDataNodes Xml.XmlNodeList
Dim bFirstInRow As Boolean
productNodes = xmlDoc.GetElementsByTagName(“users”)
For Each productNode In productNodes
baseDataNodes = productNode.ChildNodesbFirstInRow = True
For Each baseDataNode As Xml.XmlNode In baseDataNodes
If (bFirstInRow) Then bFirstInRow = False
Console.Write(baseDataNode.Name & “: ” & baseDataNode.InnerText)
Planned changes in Version 8.8:
You can download the COM License Bridge for SAP Business One 8.8 from the link:
Other information on the License Bridge in 8.8 can be found at:
The planned changes in the license API are as follows:
GetInstallationNumberList method replaces the GetInstallationNumber method. The new method returns a list of installation numbers for the loaded license file, instead of a single number.
GetSystemNumber method’s arguments have changed. The installation Number is passed to get the related system number.
IsLicenseFileExist is no longer supported.
In two weeks time, our blog will cover the topic of the SBO_SP_TransactionNotification stored procedure. So catch you then 🙂