Milestone Salto Plugin Guide Bypuresecurity v1.1 en
Milestone Salto Plugin Guide Bypuresecurity v1.1 en
By:
Version: 1.1.0
Date: 2017/10/20
Milestone / Salto integration plugin
Contents
Acronym and Abbreviations .......................................................................................................... 3
Introduction .................................................................................................................................. 3
Requirements ................................................................................................................................ 4
Delivery Package Content ............................................................................................................. 7
Plugin files description .............................................................................................................. 7
WCF web service files description............................................................................................. 8
Plugin installation procedure ........................................................................................................ 9
WCF web service installation .................................................................................................... 9
Step 1..................................................................................................................................... 9
Step 2................................................................................................................................... 12
Step 3................................................................................................................................... 13
Step 4................................................................................................................................... 15
Plugin installation .................................................................................................................... 20
Step 1................................................................................................................................... 20
Step 2................................................................................................................................... 22
Plugin operation .......................................................................................................................... 29
Backoffice plugin management............................................................................................... 31
1 General Settings ............................................................................................................... 31
2 Associated Cameras ......................................................................................................... 31
3 Access Control Events ...................................................................................................... 32
4 Access Control Actions ..................................................................................................... 34
5 Cardholders ...................................................................................................................... 35
2
Milestone / Salto integration plugin
Introduction
Salto is an AC system that provides a wide range of features to manage activity operation and
localizations integration with regard to access control infrastructure.
In this context, the plugin referred to in this document was developed with the purpose of
providing access to the information present in the SALTO access control system by way of its
integration or reading by other systems external to SALTO, in particular the Milestone XProtect
platform. The main objective is to facilitate and make more efficient the operation of these
systems, allowing its execution through a single operator interface, as opposed to the need to
operate several interfaces in organizations with several systems, being one of them SALTO.
SALTO provides an API for external communication, which is the only way to communicate
with it, otherwise it is a closed system.
In terms of macro blocks, the system as a whole can be described by the following picture:
3
Milestone / Salto integration plugin
a) Obtaining the initial configuration, done the way AC -> VMS in terms of passing
information, but with requests for information executed by the plugin, which implies
communication in the other direction. In this workflow, the transmitted information
includes doors identification, types of events and cardholders;
b) Obtaining events (historic and real-time), carried out the way AC -> VMS, being that
requests for events batches are performed by the plugin. In this workflow, the
transmitted information includes events occurrence information, such as doors
openings, intrusions, and so on;
c) Sending commands, carried out in the VMS -> AC direction. In this workflow, the plugin
sends commands to the AC for, for example, opening doors.
The communication and information passing between the VMS (plugin) and the AC is never
done directly, always passes through the communication service, which mediates all the
interaction between both systems.
It should also be noted that this plugin has been developed viewing its use in systems of
various dimensions, from large systems, with VMS distributed by several machines (eg,
federated hierarchy) and managing hundreds of cameras (see Fig.1), to smaller systems with
the VMS on a single machine managing a small number of cameras. In the latter case, it will
even be possible to consider a single machine with both the AC and the VMS systems, although
the desirable is a distributed installation, that is, each system on its machine. For the purpose
of this manual, the latter configuration will be considered.
Parent -
Milestone Management Server configuration
Recording Servers RS 1 RS n RS 1 RS n
Fig.1: network infrastructure scheme of a VMS with a hierarchical structure of Milestone servers with cameras
attached
4
Milestone / Salto integration plugin
Requirements
This integration system is composed of 3 components that communicate with each other: the
AC Salto system, the Milestone VMS system and a WCF technology web service that mediates
communication between both. As previously noted, for the purpose of this guide, each will be
considered installed on its machine.
Typically, the Salto AC system and the Milestone VMS will be installed on different machines,
located in different areas of an organization’s network, so it will be in this case a distributed
installation. It does not invalidate that the same principles cannot be applied to a local
installation or to fewer machines. Figure 2 represents a distributed installation, which will
serve as a reference for the information that will follow.
Router
Access control
server
Communication Door #1
server – WCF web
service
Door #2
Door #3
Fig.2: infrastructure example scheme with distributed installation of video surveillance system and access control
system, assuming also the existence of a communication server for the plugin web service
5
Milestone / Salto integration plugin
The following is a list of the minimum requirements for integration of a distributed Salto –
Milestone system:
The machines are identified in the network through IPs (xxx.xxx.xxx.xxx, set of 4 integers with a
maximum of 3 digits separated by ‘.’) and ports (also an integer). This is how they “see” each
other and thus can communicate with each other. Considering the already described
infrastructure distributed by 3 machines, the person in charge of the installation should also
bear in mind as an installation requirement the following information:
The plugin itself is to be installed on the VMS system machine. The plugin was implemented
using Milestone’s MIP-AC technology, a specific SDK component for integration of AC systems.
The plugin receives the configuration from the AC (doors, cardholders and event types), as well
as events (past and realtime), and can send action commands on doors to Salto by way of SHIP.
The web service built in WCF architecture has, as indicated, the objective of serving as a
Milestone – Salto communication interface, acting as a command queue, as well as storing the
events locally in its own SQL database and synchronizing all the generated events by Salto /
SHIP with all licensed and authorized points.
Finally, the Salto server, with its own database, closed behind the SHIP API / interface, accepts
action commands on doors and sends, at the plugins request, the AC configuration information
and the events stream.
It is also very important as a requirement that the clocks of the involved machines
are in sync with each other, that is, all with the same time (by the second if possible).
6
Milestone / Salto integration plugin
• MIPSaltoPuresecurity
o \MIPSDK2016R2
▪ MIPSDK_Installer_2016R2.msi
o \Plugin
▪ acplugin.def
▪ clsJSONZip.dll
▪ MIPSALTOPuresecurity.dll
▪ MIPSALTOPuresecurity.dll.config
▪ Newtonsoft.Json.dll
o \WebserviceWCF
▪ isystemsSaltoShipWS.isystemsSaltoSHIP.svc
▪ Web.config
o \WebserviceWCF\bin
▪ BLayer.dll
▪ BLayer.pdb
▪ isystemsSaltoShipWS.dll
▪ isystemsSaltoShipWS.pdb
▪ Newtonsoft.Json.dll
o \WebserviceWCF\DB
▪ 2017-05-22-isystems_Salto_MIP.bak
o milestone_salto_plugin_guide_byPuresecurity.pdf
7
Milestone / Salto integration plugin
8
Milestone / Salto integration plugin
For the following installation and configuration to take place, the support of the company’s
network administrator may be helpful.
The web service is installed on the machine destined for the communication web service and
has as prerequisites, therefore, SQL Server and IIS.
Step 1
Restore 2017-05-22-isystems_Salto_MIP.bak file referring the database. To do this, open
Microsoft SQL Server Management Studio database management tool.
1.1 Click on “databases” with the right mouse button -> “Restore Database…”:
9
Milestone / Salto integration plugin
1.2 The dialog window for restoring a database will appear. In this, the “Device” option under
“Source” must be selected, followed by click on the “…” button in the alignment.
Another dialog window will appear that will be superimposed on the first one (“Select backup
devices”) in which the following choices and actions must be made:
1.2.3 Select the .bak file provided in the installation files in \WebserviceWCF\DB (your choice
will be displayed in the “Backup media” window)
10
Milestone / Salto integration plugin
The result summary of the made choices will appear on the first dialog window in
“Destination” e “Restore plan”, referring to the database file that will be restored.
The restored database will be placed in SQL Server Management Studio, under “Databases”:
11
Milestone / Salto integration plugin
Step 2
Remove user “saltomipuser” from restored database.
2.1 Check its existence by expanding the created database (default name: isystems_Salto_MIP)
and click in “Security” -> “Users”.
2.2 Remove the user by clicking in “saltomipuser” with the right mouse button, followed by
“Delete”.
12
Milestone / Salto integration plugin
Step 3
Create user for database access.
3.1 Expand the local SQL server in SQL Server Management Studio and click “Security” ->
“Logins”.
3.2.1 On the “General” tab, fill in “Login name” with "saltomipuser" and "Password"/"Confirm
password" with the desired password:
13
Milestone / Salto integration plugin
3.2.2 On the "User Mapping" tab, select the restored database in “Users mapped to this login”
and the permissions marked on the image in “Database role membership”:
3.2.3 On the "Securables" tab, ensure that the "Grant" permission is selected in the “Connect
SQL" option under “Permissions”:
14
Milestone / Salto integration plugin
3.2.4 On the "Status" tab, ensure the selection of "Grant" and "Enabled" as per the image,
followed by “OK”:
Step 4
Install the WCF web service files.
4.1 Create folder in C:/ directory of the machine chosen to host the service. It may be in the
root or in any subfolder that is convenient according to the folder structure organization there.
As an example, in the following image it was given the name “WCF”.
15
Milestone / Salto integration plugin
4.2 Copy WCF service files present in the installation bundle (those in the root of the
\WebserviceWCF folder, including the \WebserviceWCF\bin subfolder and their files) to the
folder created specifically for the purpose in the previous point.
4.3 Create the website for the web service in IIS, associated with the web service files placed in
the “WCF” folder.
4.3.1 Open Windows IIS application through “Windows Administrative Tools” -> “Internet
Information Services”
4.3.2 As a preparatory task, create an “application pool” for the website, that will later be
created, through “<web server name>” (in the example below “DESKTOP-3LRVCST”) ->
“Application Pools” -> “Add Application Pool”:
4.3.3 Fill in the fields necessary to create the “pool”, “Name” with “SaltoService” (this field will
be on the criteria of the installer, it is not mandatory to be the provided example), “.NET CLR
Version” with “.NET CLR Version v4.0.30319” and “Managed pipeline mode” with “Integrated”.
Click in “OK”.
16
Milestone / Salto integration plugin
4.3.4 Verify that the "Identity" field of the created pool is "ApplicationPoolIdentity":
If this is not the case, then the advanced settings of the pool should be accessed by clicking the
right mouse button on it, and adjusting the “Identity” field in the “Process Model” section by
clicking “…”, followed by the appropriate configuration in “Built-in account”.
4.3.5 Create the website itself for the web service, through “<web server name>” -> “Sites” ->
“Add Website”:
4.3.6 In the form that will subsequently open, fill in the fields "Site name" (for example, with
“SaltoService”, the same name that was given to the pool created in 4.3.3), "Application pool"
which should be filled automatically with the previously created pool (otherwise, this should
be selected using the “Select… ” button by its side), "Physical path" with the path to the web
service folder, selecting it via the “…” button (eg, “C:\WCF”), and "Host name" with "*:<web
service port number>".
<web service port number> is, as already indicated in the requirements, an integer
representative of the port from which the web service will respond on the machine in which it
is placed (eg, 8100, 9000, ...). All systems that try to communicate with it, will have to have in
their configuration this port identified (eg, the plugin).
17
Milestone / Salto integration plugin
The “Start Website immediately" checkbox can be left selected, because this way the web
service will start immediately after clicking “OK”.
Otherwise, you will need to give start order later by clicking on “Sites” -> SaltoService" (right
click) -> "Manage Website" -> "Start":
18
Milestone / Salto integration plugin
In order for the web service to be functional, a final configuration step is required. This is done
configuring the xml file “Web.Config”, located in the web service files folder placed in the root
of the machine (“C:\WCF” or another location in the machines folder structure according to
the preference in the installation).
The “Web.Config” file can be opened with a simple text editor like "notepad". It is a simple
xml/text file.
After opened, the following entry should be located on one of its lines: key="ADDRESSDB"
In this line the web service connection to its own database must be configured and, for this,
the ‘value’ atribute must be updated.
This configuration line represents the web service connection to the previously configured
database (step 1). The value attribute has in this case 4 sub-attributes (server, database, uid
and pwd).
The password of the user used to access the database, previously created in this procedure
(step 3), must also be configured, replacing the password "saltomipuser" with the password
created when creating the user.
Also remember that the web service serves as communication interface between the plugin (in
VMS Milestone XProtect) and the Salto AC system, through its own SHIP interface. Therefore,
the web service must have configured the connection to SHIP.
As in the database connection configuration seen above, the following entries should be
located in the “Web.Config” configuration file:
Example:
19
Milestone / Salto integration plugin
These two configuration lines represent the IP of the machine in which the Salto AC is located,
namely the SHIP API, and the port of this machine that allows the entry of communication
requests with SHIP.
The access port to the machine where SHIP is located must also be set up (value="9100"),
replacing the value "9100" (indicated by way of example) with the correct value.
Plugin installation
After the WCF web service installation, in the 2nd phase it is necessary to install the plugin
itself.
This will be installed on the machine where Milestone XProtect VMS is located, since it was
implemented using Milestone technology, precisely for the purpose of its incorporation in this
type of systems.
The plugin installation requires 2 steps, placement of the plugin files (present in the “\Plugin”
folder in the installation bundle) in a certain location of the Milestone XProtect folder
structure, and its configuration in XProtect.
Step 1
Placing the plugin files in the correct location.
Regarding this step, one aspect that must be mentioned is that the plugin is strongly
interconnected with the Milestone XProtect “event server”. This means that one of the, if not
the main purpose of the plugin is to receive events in real-time from the AC system and
register them on the VMS. Thus, it is natural that it be incorporated in XProtect in relation to
the “event server”. Another aspect to mention is that the location of the plugin in XProtect
may vary depending on the version of this software, for the purpose of this manual, it is the
2014 version.
1.1 Copy the plugin folder to the Milestone Event Server plugins folder.
To do this, the Event Server plugin folder must be located first, using Windows Explorer. As
mentioned, in the 2014 version of XProtect software, this folder will be located in “C:\Program
Files (x86)\Milestone\XProtect Event Server\MIPPlugins”.
After locating this folder in a Windows Explorer window, simply perform a copy/paste
operation of the “\Plugin” folder located in the installation package into the open window
located at the destination location.
The result will be what can be observed in the following figure. The “\Plugin” folder should be
renamed to a meaningful name (eg, MIPSalto, PluginMIPSalto, and so on). As an example, in
the figure the “\Plugin” folder has been renamed to “\MIPSALTOPuresecurity”.
20
Milestone / Salto integration plugin
Inside the plugin folder previously copied to the Milestone XProtect folder structure you will
find a configuration file, “MIPSALTOPuresecurity.dll.config”. This file should be opened for
editing and for this you can use Notepad, since it is a simple XML text file.
After opening, the lines marked in the following figure should be located:
These lines refer to communication web service “endpoint”, that is, in practice, contain the
information that the plugin needs to invoke the web service. The endpoint “address” attribute
should be updated as follows:
21
Milestone / Salto integration plugin
Also in the same file, locate the lines marked in the following figure:
They are located at the end of the file, just below the “endpoint” definition.
This line contains information about the user used to login to the web service machine, in the
“identity” definition. In this, the attributes “userName” and “password” must be updated for
the name of the user, and respective password, to be used to access the web service machine.
Step 2
Plugin configuration on the Milestone XProtect software.
After placing the plugin files in the correct location, XProtect will need to recognize the plugin.
To do this, you must restart the XProtect Event Server service.
Open the XProtect “management client”, this software management application, typically
placed in the Windows applications structure under “Milestone” -> “XProtect Management
Application”. After this application is opened, in the options tree on the left, the “Advanced
Configuration” option should be extended, followed by click in “Services”.
On the right-hand side will appear the management actions regarding XProtect services. The
service to be restarted is the “Event Server service”, as shown in the following figure. The
restart action can be performed by clicking the “Restart” button or by clicking “Stop” followed
by “Start” (after the status of the service is ‘stopped’).
22
Milestone / Salto integration plugin
This step will allow the following steps to be performed. Otherwise it wouldn’t be possible.
2.2.1 After the plugin registration by the VMS system, the next step is to make it visible in the
XProtect interface, thus, create an instance. To do this, right click the “Access Control” option
in the options tree and then click “Create new…”.
2.2.2 Fill in the fields in the first window of the plugin’s creation wizard which, meanwhile, will
have appeared on the screen, “Name” with some meaningful designation for the plugin (in the
figure exemple, “MIPSalto”), and choose from the list of plugins “Integration plug-in” the one
you want to instantiate, in this case, “MIP SALTO Puresecurity”, followed by clicking “Next”
button:
23
Milestone / Salto integration plugin
2.2.3 The second part of the plugin creation wizard will appear, in which all the additional
fields should be filled, “Address” with the IP address of the WCF web service machine (in the
figure example, 192.168.254.40), “Port” with the port from which the web service in the
respective machine responds (in the figure example, 8100), “Username” with the user name
for authentication in the web service machine (in the figure example, edp1) and its password,
and, finally, “Event polling start date”.
As for the later, a separate paragraph to explain: as indicate earlier, the plugin has an essential
component for obtaining AC events in real-time. However, the moment from which to start
getting events can be configured at this point, so that the plugin has the option to get not only
the events in the immediate moment, but rather “go to the past” to get events in the AC
historic from the defined moment to the current moment, from which it will engage in real-
time fetching. This last wizard field is used to indicate the “backwards” date from which to
obtain this event historic, in the format “aa/mm/dd” (2 digits for year, followed by 2 digits for
month and 2 digits for day, all these pairs of digits separated by slash). In the example of the
figure that follows, it is indicated the pretension of obtaining all events from September 1 2017
on.
This step will continue with click in the “Next” button, after which the automatic phase of the
wizard will be entered, signaled by the “Connecting to the access control system…” title and a
green progress bar (as can be observed below in the picture after the next one).
24
Milestone / Salto integration plugin
If the previous procedure is executed correctly, the result should be a screen similar to the
following figure, in which you can find a summary of the information obtained by the plugin
when integrating with the AC. Of greater relevance, information regarding AC doors (“Doors”),
event types (“Events”), allowed command types (“Commands”) and door states (“States”).
25
Milestone / Salto integration plugin
The previous screen can serve immediately for the operator/administrator to evaluate the
information of the integrated AC received by the plugin.
2.2.4 The wizard will continue with a screen identical to the following figure, labeled
“Associated cameras”. In this phase of the plugin configuration, you can find a list of the
obtained doors from the AC on the left side and on the right side a list of the cameras already
registered by the VMS (Milestone XProtect).
One of the purposes of this VMS Milestone <-> AC Salto integration is also to allow to associate
these cameras with doors, in order to later create automatisms of, for example, vídeo
recording through the cameras in the occurrence of door events.
So, at this point in the plugin configuration, it is already possible to start this association of
cameras to doors, through drag-and-drop operations, taking the cameras on the right side and
dragging them to left side. Depending on the doors you want to associate the cameras with,
these must be dragged to the zones marked with “Drop camera here…” of the respective
doors. In the following figure, comparing to the previous, the subtle difference resulting from
the association of “Camera 1” with the “Cilindro Electronico” door can be observed, in which
above the expression “Drop camera here…” is the designation of the camera associated with
the door, with an aligned “Remove” button, used to remove the association, if so desired.
26
Milestone / Salto integration plugin
2.2.5 After finishing the previous steps, the plugin configuration wizard finalization screen will
appear.
27
Milestone / Salto integration plugin
Updating the plugin with a new version (new files) always requires repeating step 1
of the “Plugin” section of this guide, with a nuance: given that it is an update, before
copying the new files over the old ones, you must stop (“Stop”) the “Event Server
service”, as exemplified in step 2.1, to unlock the plugin files registered in Milestone
XProtect. Then, you can copy the new version files over the files of the version in use, never
forgetting the need to, at the end of the update procedure, start (“Start”) the “Event Server
service” again.
28
Milestone / Salto integration plugin
Plugin operation
After installation, the installed plugin (“MIPSalto” in the figure) will appear in the list of plugins
related to integrations with AC systems (“Access Control” tab in the “XProtect Management
Application” management application interface).
Selecting the plugin in this tab, information regarding the state of the plugin will appear on the
right side. When everything is working correctly, the status must be “Connected” and “Server
connected”.
To access the backoffice operation interface of the plugin, you should right click on the name
of the plugin, then click on “Properties”:
29
Milestone / Salto integration plugin
Subsequently the window that allows backoffice management operation of the plugin will
appear.
30
Milestone / Salto integration plugin
1 General Settings
In the figure above, you can see the contents of the plugin management tab for general
settings. This is also the tab that opens initially when you click on “Properties” in the plugin.
In this tab, in addition to the initial configuration information used in the installation wizard
(“Name”, “Integration plug-in”, “Address”, “Port”, “Username”, “Password” e “Event polling
start date”), you can find the following plugin configuration fields:
At any time, you can use this tab to edit and adjust all these plugin configuration fields.
2 Associated Cameras
This tab refers to the association of doors with cameras, in exactly the same way as it
appeared a given time in the installation wizard. Cameras can be attached to doors by dragging
from the right (cameras) to the left (doors). Cameras can be disassociated from doors by
clicking the respective “Remove” button. All associations made during the installation are
reflected here and can be changed.
31
Milestone / Salto integration plugin
In addition, the “Select” column allows you to select which types of events to monitor and, in
contrast, those that you do not want to monitor. It may happen that in certain systems many
events of a certain type will occur in the AC but you are not interested at all to monitor them
on the VMS side. In this case, you can unselect this type of event in the “Select” column,
allowing for events of this type not showing in the events lists.
The functionality this tab refers to can be seen in the figure below:
32
Milestone / Salto integration plugin
Finally, note the existence of the “User-defined Categories…” button. This button server
precisely to create additional categories, adjusted to the needs and context of the company
and the system in which the plugin was installed. These “extra” categories can then be used to
group event types by its choice, after creation, in the “Event Category” column.
The new category creation window can be checked in the following figure example:
33
Milestone / Salto integration plugin
• “Add Access Control Action” button, serves to create a new action and, in practice,
adds a new line to the list of actions above the button;
• In the new action creation line:
o “Enable” column, is to activate/deactivate the action after it has been created
(it may no longer be useful at any given moment or during a given period);
o “Triggering Event” column, serves to choose the type of event that will trigger
the action;
o “Source” column, serves to choose the source in which the event that will
trigger the action may occur, in this case, a door (or doors);
o “Time Profile” column, serves to choose the time or period during which the
action may occur;
o “X” column, is used to completely erase the action from the system.
In addition, some actions may have some kind of finer detail to define. This will be the case
with notifications and, therefore, the example in the figure above. In this case, by selecting the
action in the list, the finer data whose definition is needed to complete the action
configuration will appear in the zone below the action creation button (unless the intended is
the ‘default’).
In the given example, this detail can be observed in the following figure, corresponding to the
detail originated by the action chosen in the previous figure.
34
Milestone / Salto integration plugin
The detail for this action, of the notification type, includes, on the left side, the definition of
the camera that can be triggered by the action, and other aspects such as the loudspeaker, the
microphone and the sound alert.
On the right side, is located the definition of the commands allowed for this action of the
notification type, in this case, the ‘default’ commands (“lock” and “unlock”) are defined,
according to the characteristics of the action in question.
A new command can be added by clicking the “Add Command” button or the existing
command can be changed by clicking on it. Imagine that it is intended that in the generated
notification only one of the commands “Lock” or “Unlock” is allowed: in this case, select the
created command line and then, since not all the available commands are wanted, but only
one of them, select “Access control command” -> “Lock” or “Unlock” (according to the
command that is to be made available in the notification window) -> “[source]” (meaning the
source of the notification, in the case, probably a door for which access was requested by a
cardholder).
5 Cardholders
This last tab of the plugin’s management interface includes information about the cardholders
(card users, meaning, people registered in the system with access to the installations/doors).
35
Milestone / Salto integration plugin
This is a simple list of cardholders, imported from the AC to the VMS. Clicking on each
cardholder’s name gives access to more detailed information that will appear in the space to
the right.
In large systems, this list of cardholders can reach a very large size, so the plugin offers a
cardholders search functionality, simply by placing the text string that is to be searched in the
text box with the magnifying glass, being the search result immediately reflected on the list.
36