This document offers answers to the most common audit questions.


A brief introduction to D2000 and its architecture

See 


Structure of D2000 systems in our factory

The answer to this question is very factory-specific. Here, we offer two possible configurations:

Scenario 1 - Three redundant D2000 systems

Currently, there are 3 independent (though interconnected) systems in <Our_company>, built using D2000 technology:

  • <System1>
  • <System2>
  • <System3>

All three D2000 instances run physically on three independent execution servers (virtualized Windows), which run the hypervisor for the virtual servers needed to run the D2000 system. Each D2000 instance has its own application server, which is redundant and runs physically on a different server, and individual users connect to these application servers. New installations and updates for D2000 are distributed to users via FTP updates from a special server. D2000 is a fully redundant system in terms of application, archive databases, and network optical connections.


Scenario 2 - A three-node SCADA and a two-node MES

Currently, there are 2 independent (though interconnected) systems in <Our_company>, built using D2000 technology:

  • SCADA
  • MES

The SCADA application runs on 3 redundant physical servers (2 of them are in the primary location, the last one is in a disaster recovery location). The two servers are connected to 2 redundant networks, and the DR server is connected to a single network. All servers run Linux (RedHat).

The MES application runs on 2 redundant virtual servers located in the primary location. These servers (Linux RedHat) also host a PostgreSQL application database, which also contains the EDA database (energy database working with vectors). This database is running on Linux clusterware (Corosync + Pacemaker).

Operators of the SCADA application are also connected to the redundant network, whereas users of MES are connected via redundant Security Access Proxy Servers running on virtual servers (Windows) located in a DMZ network.



Please provide an export of all active directory accounts, including the last log-on date and status (enabled/disabled).

D2000 is part of the <Our_company> domain, and the domain is managed by the local IT department. We have read access to the active directory, where all the people from the control systems department are listed as local administrators (<list of names>). With these accounts, we can connect to the Windows servers with D2000. There is also a group for suppliers in the active directory, where every supplier who connects to the <Our_company> network has an account created. We can change these.
Our IT administrator provided a list of users with last logon in the attached file: AD_Lastlogon.xlsx.



Please provide the results of the most recent user access rights review performed (if applicable) for the D2000 system

We periodically check access rights every 12 months. If an employee terminates their employment, they cannot log in to the <Our_company> network and cannot connect to D2000. This is not systematically handled by HR, we do not know about the termination of an employee's employment. In the event of a change in position, access rights are assigned at the request of the employee's superior.



Provide a system-generated report (Excel is preferred) of users and their access levels/roles for the D2000 system.  Please include user ID, user full name, account creation date, last modified/change date (if possible), and access level/roles within the listing.

Please provide an electronic copy of the query utilized or a screenshot showing how the listing was generated.

There are 2 basic types of D2000 users: administrators and standard users. Administrators can edit D2000 objects using D2000 CNF/D2000 GrEditor tools. Selected administrators can also edit/create other users. This is how to obtain the list of users in the D2000 Cnf tool:

The list can be configured (add/remove needed columns, e.g., Create time, Modify time), exported (Ctrl+C), and copied, e.g., to Excel.

Full list: see file ‘D2000 list of users.xlsx

As for access roles, each user can be assigned to multiple Object groups for read/control/modify access. Each of the Object groups contains a list of D2000 objects to which these rights apply. For more info, see documentation - Users and Access Rights.

These access rights are a configuration that is created by the D2000 administrator by creating an Object group, for example, Quality, and assigning this object to certain users for reading/controlling or modifying, and then the software determines who is logged in and the level of their access rights to the given Quality group. All/selected users can be exported to XML, and their assigned groups and access rights viewed/extracted. However, this can be a large amount of data, and knowledge of what the specific group means is needed.

Also, the configuration of individual Object groups can be exported to XML, and D2000 objects assigned to this group can be viewed/extracted:

XML Export of all users, all groups of all D2000 applications is in file: XML_EXPORTS.zip



Provide a system-generated report or a screenshot showing the password settings for the D2000 system.  

If the system is single sign-on, please show that the application is configured this way for all employees and which domain it references for log-on. 
Please include the following, if applicable:

  • Password Length
  • Password History
  • Password Complexity
  • Account Lockout Attempts
  • Account Lockout Duration
  • Idle Time Lockout

Password policy is configurable using system parameters. Though single sign-on is supported by D2000 (on Windows/Linux), currently it is not configured; all authentication is performed by the D2000. Currently, parameter SecurityPolicy=0, which means the advanced security policy (password length, number of numbers/special characters, etc) applicable during password change is not enforced. Also, password expiration is not configured for any user. We do not use a domain name for login.

For explanation of individual parameters, see the documentation - Parameters for D2000 Server.



Provide a system-generated listing (Excel is preferred) of all application and data (if applicable) changes promoted to production since 1/1/2025 for the D2000 system.

Please provide an electronic copy of the query utilized or a screenshot showing how the listing was generated. If the listing is generated from the ticketing system, please provide a screenshot of the last modified date for the D2000 system in an effort to tie the two together.

There are 2 ways to handle this request:

  1. In Cnf, you can go to the Object menu and select History. In the dialog window, set Modify time from/to appropriately and click Find. The list can be copied (Ctrl+C) as a CSV list.

    Full list: see file ‘D2000 changes of objects in 2025.xlsx

    For each object, its default latest history is limited to the last 7 changes; this is configurable by a system parameter LogRecsLimit. So, currently, only the last 7 changes of all objects modified in 2025 can be obtained from the system. The reason is to keep the Configuration database within reasonable size limits.

    For more info, see the documentation - Object modification history.

  2. Using the Logging database. The default history depth of the Logging database is, however, only 7 days; this is configurable (so currently changes since 1/1/2025 are not stored). The reason is to keep the Logging database within reasonable size limits.

    For more info, see the documentation - System Event Logging (D2000).

Also, “GIT object history” can be configured. In this mode, the D2000 system stores all changes (not only information about change, but XML export of changed objects| to an internal GIT repository, which can be viewed, used to compare individual versions, and, if needed, return to older versions. 
For more info, see the documentation - GIT object history.



Provide a system-generated listing (Excel is preferred) of all users / IDs with the ability to modify production application code in the D2000 system, as well as those that can move code changes to the production environment (if applicable). 

Please provide an electronic copy of the query utilized or a screenshot showing how the listing was generated.  If the listing is generated from the ticketing system, please provide a screenshot of the last modified date for the D2000 system in an effort to tie the two together.

Only the administrators can modify the application code (ESL scripts), as well as other D2000 objects configurable in D2000 Cnf. „move code changes to the production environment” is applicable to D2000 technology (see XML Export/XML Import), but there is almost no test environment for any of the D2000 systems in <Our_company>. Still, only administrators can perform XLM import, so the list would be identical.

For major implementation changes, the changes are created at the supplier and gradually deployed into production using the XML Export/XML Import utility. Of course, a backup of the system database is performed before deploying the changes.
Administrators can be filtered in the ‘D2000 list of users.xlsx’ file.



Please provide a system-generated listing of those individuals with the ability to modify (add, change, & delete) the job schedules for the D2000 system, including the supporting operating systems and databases.

There are no external “job schedules”. There are scripts (internal D2000 objects, containing ESL code and/or Java code) triggered by a system event or periodically; again, only administrators can edit them. See the previous answer.



Please provide a system-generated log showing the history (since 1/1/2025) of D2000 system automated jobs, including the date, time, job name, and success/failure status.

Please provide an electronic copy of the query utilized or a screenshot showing how the listing was generated:

There are no “jobs” defined in the D2000 scripts. Only internal scripts (ESL/Java) can be run (periodically or on a defined trigger). The scripts can use the LOG action to log a text message into a Logging database, but there is no logging of scripts being run. Only exceptions that occur in scripts (script errors) are recorded in the Logging database:



Please provide system-generated evidence (a report or a screenshot) showing the backup schedule of the D2000 system. Please provide documentation supporting if the backups are Immutable and/or Air-Gapped.

Scenario 1 - External backups by Windows Task Scheduler

Backups of Syscfg/Logfile databases are configured as Windows scheduled tasks on individual application servers. The configuration database and logging database (PostgreSQL) are backed up. 


Backups of Syscfg/Logfile databases are created locally on application servers (D:\_Backups\_LastNight) and copied to \\ SrvBkp1v\_Backup\LastNight where the last 7 daily backups are preserved.

Backups of the MES database are configured as Windows scheduled tasks on the SrvDbs1v server. The MES database (Oracle application database) is backed up daily, using RMAN backup (to X:\Oracle\OraBack\MESDB) as well as the “exp” utility for export of individual schemes (to D:\_Backups\_LastNight). Exports are copied to \\SrvBkp1v\_Backup\LastNight\SRVDBS1 where the last backup is preserved.


Backups of archives (historical databases) of all applications are performed weekly on their respective servers. 

Backups are created directly on \\SrvBkp1v\_Backup, not locally (due to their size).

Also, backup of virtual application servers, archiving server, and database server (SrvDbs1) are performed by Veeam (and kept on \\SrvBkp1v\_Backup).

We do air gap backups. We manually copy the data to a designated network storage location, where a job runs that transfers the data to a tape drive that is managed by local IT. We set the copy frequency to once a quarter. We have not yet tried to restore this data.


Scenario 2 - Backups performed by the Sysprof Backup module, 2-node redundant D2000 application

Backups of Syscfg/Logfile/Archive databases (from both redundant D2000 servers) are performed by the Sysprof Backup module. In the Sysprof schemes, backup parameters (start time, periodicity, timeout, and other parameters) are configured. Backups are performed on the management server where SYSPROF.EVH is running.

Daily backups are stored to D:\_Backup\_LastNight, and also copied to D:\_Backup\_LastNight_1, 2, ... 7, so the last 7 daily backups are available.


Scenario 3 - Backups performed by the Sysprof Backup module, an MES database on PostgreSQL

Backups of the MES database (PostgreSQL running on a Linux cluster) are performed daily by the Sysprof Backup module. They are stored to D:\_Backup\LastNight, and then copied to the NAS server, with a 7-day retention.


Scenario 4 - Backups performed by the Sysprof Backup module, an MES database on Oracle, using 'exp'

Backups of the MES database (Oracle RAC) are performed daily by the Sysprof Backup module. They are stored in D:\_Backup\LastNight, and then copied to the NAS server.

The Oracle "exp" utility is internally used to dump individual database schemes. The backups are then copied to the NAS server, with a 7-day retention (screenshot not included).

Scenario 5 - Backups performed by the Sysprof Backup module, an MES database on Oracle, using 'rman'

Backups of the MES database (Oracle RAC) are performed daily by the Sysprof Backup module. They are stored in F:\oracle\oraback, and then copied to the NAS server.

The Oracle "rman" utility is internally used to back up the whole database. The backups are then copied to the NAS server, with a 7-day retention (screenshot not included).



Please provide a system-generated listing of those individuals with the ability to modify (add, change, & delete) the backup schedules supporting the D2000 system.

Scenario 1 - External backups by Windows Task Scheduler

That would be Windows users assigned to the Administrators group of individual servers (as well as Domain admins). E.g., on <D2000_server_name>:

Scenario 2 - Backups performed by the Sysprof Backup module

That would be D2000 users with Administrator rights. They can be filtered out from the list of all D2000 users for individual D2000 applications, see file ‘D2000 list of users.xlsx’.



Please provide a system-generated log showing the history (since 1/1/2025) of D2000 system backups, including the date, time, job name, and success/failure status.

Please provide an electronic copy of the query utilized or a screenshot showing how the listing was generated.

Scenario 1 - External backups by Windows Task Scheduler

As the jobs are run by Windows Scheduler, this question should probably be answered by the administrators of AD responsible for keeping logs. The scripts, however, also contain logging of being run, which can be looked at, and the required information manually extracted. 

On application servers, logs are located in D:\_Backup\Logs\YYYY_MM directories (one log per backup).

Scenario 2 - Backups performed by the Sysprof Backup module

On application servers, logs of individual backups, performed by the Sysprof Backup module, are located in D:\_Backup\Logs\YYYY_MM directories (one log per run, plus one log per exp/rman/pg_dump).

Success/failure is reported by Sysprof, based on the return code of backup utilities used (e.g., exp/rman/pg_dump). Failure of the last backup is indicated by the red color of Sysprof Backup pictures (schemes).



Please provide documentation around a recent restore of the D2000 system. 


So far, there has been no need to perform a full system or virtual server restore. We have tested restoring a virtual machine, and it worked fine.

Sometimes it happens that we revert to the last backup of the D2000 Configuration database. This restore is usually performed on a notebook where D2000 is installed, using D2000 Application Manager. Then, we use the restored database to XML export the configuration of objects that have been deleted or modified, and to revert changes.



Please provide a list of database users used for accessing D2000 databases (Configuration, Logging, Archiving) as well as to external databases (MES)

Configuration/Logging databases: Only the D2000 Server accesses these databases. Fixed username "dba" is used for access, password is configurable.

The Configuration database is read when the D2000 Server is started. The whole contents (with the exception of object history) is read into the D2000 Server's memory. After that, all configuration changes (including startup values) are written to the Configuration database. Reading is performed only when working with the Object modification history.

The Logging database is read whenever a user/script needs logging data. Both reading and writing are performed only by the D2000 Server. Writing is performed continuously, as events in the system occur.

So, whenever a user/script needs logging data, the D2000 Server reads it. Therefore, user PCs don't need network connectivity to the configuration database, only to the D2000 Server (TCP port 3119).

Archiving database: Only the D2000 Archiv process accesses these databases. Fixed username is used for access ("dba" for PostgreSQL and Sybase SQL Anywhere, <application>_archiv for Oracle), password is configurable.

Both reading and writing are performed only by the D2000 Archiv. Writing is performed continuously, as values of D2000 objects are being changed, and values can also be written by script (or manually by users from D2000 HI processes).

Again, user PCs don't need network connectivity to the archiving database, only to the D2000 Server (TCP port 3119), which routes the read/write requests to the respective D2000 Archiv process (there can be a single one or multiple instances in redundant systems). 

External databases (e.g., MES): Connectivity to external databases is handled by the D2000 DbManager process. It uses DSN/username/password configured in the Database object. Non-administrators don't have access to the configuration of these objects, so they don't know these parameters.

Again, user PCs don't need network connectivity to the external databases, only to the D2000 Server (TCP port 3119), which routes the read/write requests to the respective D2000 DbManager process.

Note 1: Sometimes, however, users have, e.g., Microsoft Excel reports that directly read data from these databases; in these cases, network connectivity is required, but not because of the D2000 system, but because of these reports. Best practice is to use a dedicated, read-only user for these reports, who has strictly limited access rights for specific database tables only.

Note 2: Sometimes, external systems read/write data from/to these databases; in these cases, network connectivity is required from these systems. Best practice is to use a dedicated (if possible, read-only) user for these reports, who has strictly limited access rights for specific database tables only.



Please describe how the communication of D2000 clients with the D2000 Server is secured

Client processes (both user processes D2000 HI, D2000 CNFD2000 GrEditor, and system processes e.g., D2000 Kom, D2000 Calc, D2000 DbManager) communicate with the D2000 Server using TCP, by default connecting to the TCP port 3119 (although also reverse connection of the D2000 Server to processes located, e.g., in low-level DMZ can be configured). On Windows, the local D2000 processes  (running on the same computer as the D2000 Server) use shared memory, which is faster than TCP.

Scenario 1 - Default configuration

By default, proprietary compression and encryption are used in the communication channel.


Scenario 2 - TLS configuration

A standard TLS (version 1.3 in D2000 version 25) is used. Clients verify the validity of the D2000 Server's certificate. It is necessary to regenerate and redistribute the server certificate before it expires. More information on configuration and certificate generation can be read in the documentation.




Please describe which OS accounts and elevated privileges are used for the D2000 system

Scenario 1 - D2000 on Linux

On Linux, the D2000 runs under a user specified during installation. The default user is D2000. The D2000 application is started as a service using systemd. Most of the D2000 processes run with basic privileges; there are several exceptions, which are described in the documentation:

  • D2000 Server process requires special capabilities to create multicast sockets: 
    setcap cap_net_raw=pe kernel
  • D2000 Kom process may require special capabilities to work with raw sockets, to bind to privileged ports, and to work with GPIO and serial ports (usage depends on used protocols):
    setcap cap_dac_override,cap_sys_rawio,cap_net_bind_service+ep kom
  • D2000 Wssc process requires access to privileged port (port<1024):
    setcap cap_net_bind_service+ep wssc


Scenario 2 - D2000 on Windows

On Linux, the D2000 runs as a service under a LOCAL SYSTEM user. Individual processes may, however, be run under specific users for multiple reasons:

  • D2000 Event Handler: If the Sysprof module is deployed, to access other computers with D2000 (to monitor disk/CPU usage, free memory, etc). Also, if the process accesses remote file shares (e.g., to read/create TXT, XML, or CSV files), a dedicated user is needed, as network services are not available under a LOCAL SYSTEM user.
  • D2000 Kom: If the OPC DA or OPC HDA protocols are used to connect to the remote OPC DA/HDA server, the same user with an identical password has to be configured on both computers.
  • D2000 DbManager: If Kerberos authentication is used for some ODBC connections, this process may have to be run under a specific user.

In the configuration of individual processes, when Autostart is enabled, a specific Windows user can be configured (together with the password). In this case, the D2000 Server process creates a Windows service under this user and starts the service. The specified user has to have a "Log on as a service" right, so that a service can be started impersonating the specified user.




0 komentárov

Nie ste prihlásený. Akékoľvek zmeny, ktoré vykonáte, sa označia ako anonymné. Ak už máte svoj účet, pravdepodobne sa budete chcieť prihlásiť .