EBS TechnologyEN
EBS TechnologyEN
Custo m iz at io n
Entersoft Business Suite | Entersoft Expert | Entersoft CRM
Identity
Document version
1.0.1
Software version
3.8.x.x
Last Update
April 2011
Copyright
Copyright 2011 Entersoft S.A. All rights reserved.
No part of this work may be reproduced, transmitted, stored, or used in any form or by any means, without the prior written
permission of the publisher.
Regarding the present content
No guarantee whatsoever is handed out for the possible existence of mistakes or the wrongful use or non-wanted results
produced by the use of processes hereby followed and recommended.
CONTENTS
AIM
ARCHITECTURAL MODEL
SYSTEM INSTALLATION
MAIN STEPS
ENTERSOFT SERVER AND SQL SERVER INSTALLATION
APPLICATION SERVER INSTALLATION
CLIENT INSTALLATION
DATABASE INSTALLATION (SQL SERVER ONLY INSTALLATION)
FULL UNINSTALLATION OF THE APPLICATION
CRM STANDARD CONFIGURATION INSTALLATION
PRINTER INSTALLATION
TAX MECHANISM INSTALLATION
PROPOSED INFRASTRUCTURE
INSTALLATION FOLDERS - SHADOWING
10
10
12
14
15
15
16
17
18
19
20
21
SOFTWARE ACTIVATION
23
VERSION UPGRADE
24
25
26
FORM STRUCTURE
26
27
27
27
28
28
28
FORM DESIGN
ENTITY FIELDS
FORM STRUCTURE
DESIGN LOGIC
ADDING CONTROLS
PARAMETRIC SEARCH
RELATED VIEWS (CONTEXT)
COMMAND EXECUTION TOOLBARS
OTHER CONTROLS
29
29
30
30
32
35
36
37
39
40
USER PRIVILEGES
41
41
41
42
42
3/135
42
44
45
45
48
49
50
52
52
53
53
55
ADVANCED IMPORT ()
IMPORT SCENARIO STEPS
IMPORT FROM ANY SOURCE TO A NEW (TEMPORARY) TABLE
IMPORT FROM QUERY TO AN EXISTING ES TABLE
IMPORT FROM A TEMPORARY TABLE TO AN ENTITY
LINK TO EXTERNAL SOURCES
SAVING TEMPORARY FILES
READ DBASE FILES
RECALL A SCENARIO
TIME SCHEDULING
58
59
61
64
65
67
68
68
68
68
69
73
76
77
78
IMPORT ATTACHMENTS
78
79
SYNCHRONIZING BRANCHES
80
81
81
81
84
84
85
SYNCHRONIZATION PROCESS
EVENTS REGISTRATION
HANDSHAKE
UPDATE FROM INCOMING SYNCHRONIZATION ENTRIES
DESCRIPTION OF PROCESS TABLES
86
86
86
86
87
88
88
88
4/135
AUTOMATE PROCEDURE
TIMER HANDSHAKE
TIMER ESIMPORTOUTBIN
89
89
90
TROUBLESHOOTING
91
93
93
94
HISTORY LOG
94
94
95
95
97
100
100
103
107
107
108
AUTOMATIONS
TARGET FUNCTION
AUTOMATION TYPES
IMPLEMENTATION EXAMPLES
109
109
109
110
AIL/SMS ALERTS
113
SEND FAX
115
116
117
118
118
119
120
120
EVENT LOG
121
123
ONLINE USERS
123
124
124
DATABASE BACKUP
125
126
126
ENTERSOFT COMMANDS
126
127
127
5/135
127
128
ESINSTALLSTANDARDDB
129
ESDBCONNECTIONEDIT
129
BUSINESS TRIGGERS
RUN CUSTOM CODE AT UPDATE, INSERT
AUTOMATIC CODES CREATION IN OTHER COMPANIES
130
130
131
ES QUERY ANALYSER
131
132
133
ADD-IN HANDLERS
ADD HANDLER IN SCROLLER
ADD HANDLER IN FORMS-SCREENS
134
134
134
6/135
AIM
This manual aims at:
understanding the architectural model and technical infrastructure of the system
learning the installation, upgrade and maintenance procedures
guiding through the definition of access rights procedure for the applications users
learning the tools for importing data from other systems
providing technical information for the use of all auxiliary, technical, programming and other tools the system
provides, in order to facilitate the development of further functionalities than those already being provided, for
the independent configuration of each installation by technicians and implementation consultants.
pointing out methods for expanding the systems performance and providing references for optimizing
functionality
7/135
Regardless of how the system is installed, there are always 3 unique levels which can coexist to one or located on
different computers.
1. Database level includes the SQL Server, where the relational database exists, which is used by the Entersoft
system for managing data (Store-Retrieve Data).
2. The next level is the Entersoft Application Server (EAS). It is responsible for providing the business functionality
and services to any client application. Only EAS can communicate with the SQL Server to draw or store data. No
other system application is allowed to have direct access to the SQL Server, besides EAS, for only it knows the
functionality and rules governing the system in order to provide both the proper services as well as the correct
and safe management of the database.
Entersoft Application server is launched in two ways:
Either as a Windows NT service which is installed and configured automatically by the Setup procedure (cd,
msi).
Or as a Windows console application (ESSessionSrvConsole.EXE). The console option is very important,
because it allows the activation of multiple EASs, even of different versions on the same computer (different
ports). It is also a convenient way for the systems configuration, for it can start and stop easily.
Note that
In a live installation, the service, not the console must be used.
This level includes the Entersoft E-Commerce Server (ECS), which manages and provides services for the Entersoft
E-Commerce. This server doesnt communicate directly with the database but with the EAS, in order to retrieve
and store data like any other terminal station. Its installation is done separately from the original setup.
3. The Entersoft Smart Client (ESC) is a usual client which connects and has access to all the services and
functionalities the EAS provides. This client is the known Windows Form application (ESMainApp.EXE), which
provides to the end-user, advanced technology forms and other components in order to interact with the system
and perform daily procedures.
8/135
The ESC is connected with the EAS via a local TCP/IP connection or via Ethernet, Internet. Sending and receiving
data is accomplished with the use of Binary format, with a highly efficient and compressed algorithm, designed
by Entersoft especially for the clients needs.
This allows the clients to communicate with the EAS even via low bandwidth communication channels (such as
dialup, PSTN or GPS/3G) or via medium speed DSL connection.The ESC is connected with the EAS via a local
TCP/IP connection or via Ethernet, Internet. Sending and receiving data is accomplished with the use of Binary
format, with a highly efficient and compressed algorithm, designed by Entersoft especially for the clients needs.
This allows the clients to communicate with the EAS even via low bandwidth communication channels (such as
dialup, PSTN or GPS/3G) or via medium speed DSL connection.
This method of communication is more efficient than the use of a Terminal Server/Terminal client model and at least
10 to 20 times faster.
Any 3rd party application can connect to the EAS, using the same techniques and objects the Entersoft client uses. This
is easily accomplished with the use of ESLightSession object, through which it can connect and gain access to all EASs
functionality.
An Entersoft Application Server can connect to one or more SQL Servers and to one or more databases. This
architecture is related to the Multi-Company, Multi Database functionality of the system. To connect each client to the
Application Server, a Database, Company, Site and User credentials must be applied.
It should be noted that the system is tolerant to disconnections with the application server, since the connection is
done only when required (disconnected model).
9/135
SYSTEM INSTALLATION
M A IN S TE P S
The setup will start automatically when the DVD media is inserted in the drive. If Windows Autorun is disabled or
you are installing the application from a local or network drive please double-click the file named setup.hta
located in the root directory. You can change the language of the setup by clicking the appropriate icon
(both Greek and English are supported).
STEP 1 Installation configuration
In this step, you will configure the installation of Entersoft Business Suite and Expert, specifying the operating
system, the processor architecture and the product that you will install. The supported operating systems are
Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008 and Windows 7.
The DVD that you received may contain more than one product (for instance Business Suite EL02, Expert EL02), so
you have to select the product that you want to install.
When you are deploying Entersoft Business Suite or Expert in your organization, you have to configure the SQL
Server that your installation will use, the Entersoft Server(s) that will exist and their connectivity with the Entersoft
Clients that will be installed. Therefore, you have to select the role that the computer will have in your installation.
There are four different roles:
Entersoft Server and SQL Server (the SQL Server is hosted in the same computer)
SQL Server Only (the Entersoft Server will be hosted in another computer and you want to restore the
Startup - Zero and the Demo databases in a local SQL Server)
ATTENTION!
If SQL Server is hosted in this workstation you can choose if you want to install Microsoft SQL Server Express Edition (in the DVD media
you will find both 2005 and 2008 editions).
If the SQL Server and the Entersoft Server will be hosted in different computers, then you will have to:
o
If the SQL Server and the Entersoft Server will be hosted in the same computer, then you will have to:
o
If you chose to install Microsoft SQL Server Express Edition then a gray link Configure SA Account will appear
next to the Microsoft SQL Server installation link. This link enables the user to specify a password for the SQL
Server SA account (System Administrator). The default password is e
esP@ssw0rd. Entersoft STRONGLY
recommends that you change the password of the SA account for security purposes. The password that you will
enter may not be empty or contain the character (double quote). If you specify an invalid password then the
password boxes will become red and you will not be able to install Microsoft SQL Server Express (you can reset the
password by clicking Reset).
If you are installing SQL Server Express 2008 then you will have to install Windows PowerShell 1.0. Windows
PowerShell 1.0 is preinstalled in Windows 7, included in Windows Server 2008 as an additional feature and is
available as a separate download from Microsoft for the other operating systems (the Windows PowerShell 1.0 link
points to the download page).
11/135
You can install the selected product by clicking the link on the bottom of the installation form. By clicking Next,
you can start the installation of Entersoft Business Suite - Expert. During the setup, you will be requested to
configure the application, depending on the computer role that you chose in the first step. If a UAC (User Account
Control) message is shown, please accept it.
If you are reinstalling Entersoft Business Suite or Expert and all of the configuration files exist then you will not be
requested to configure the application, as this configuration is assumed to be valid.
If a configuration step fails then a button named Retry appears next to the Next button, enabling you to re-run
the configuration step and see if it was fixed. If you want to skip the error and proceed to the next step then click
Next. If you want to change something in the configuration, you can use the Entersoft Control Panel after the
installation is completed.
E N TE R SO F T SE R V ER A N D S Q L SE R V ER I NS T A L LA T IO N
At first, you will be prompted to restore the Zero Startup and Demo databases to a local SQL Server. The SQL
Server Instance field lists all the local SQL Server instances that are registered in the system. The Data File (*.mdf)
and Log File (*.ldf) fields show the path that the database files will be stored (by default these paths are the paths
used from the selected SQL Server).
If the SQL Instance that you want to use is not listed in this box and you are sure that this instance exists in the
computer that you are installing the software, then you can type it (a warning message will appear).
Please make sure that the instance that you typed exists, belongs to this computer and that the SQL Service is
enabled and running, otherwise the restore of the backups will fail.
12/135
You will be prompted for a username and password for the SQL Server only if it is not accessible with Windows Authentication.
If the database exists already, you will be prompted whether you want to replace it.
Make sure that you are not replacing any database that you need otherwise all data WILL BE LOST FOREVER.
After the restore of the backups, the setup will create the ESDBDef.xml file referencing the Zero-Startup and Demo
databases that were restored in the previous step (you will not be prompted for this operation).
Next, you will specify the server name (or IP address) and the port that the Entersoft Clients will use to listen for
connections (these settings are stored in ESClientConnect.xml and ES00Server.config). The proposed port is
depending on the product that you are installing. If you want to change the default, please make sure that you
enter the same port number during the Entersoft Client setup (otherwise you will have to change it via the
Entersoft Control Panel).
In the next step, the Entersoft Client Add On (Crystal Reports) is copied from the installation media. This copy may take a
minute or two (depending on network delays if you are installing from a network drive).
If no serial number is specified (all
stay zero), then only demo mode
will be allowed.
Finally, in the next step you will enter the serial number that you received from Entersoft. If you leave the serial number
as is (all zeros) then the application will enter the demo mode. Remember to activate your software if you enter your
serial number in this step. Using the copy and paste buttons next to the serial number box, you can edit the serial
number in a more comfortable manner.
When the installation is completed, two shortcuts will be created in the Start menu: one that launches Entersoft
Business Suite (or Expert) and one that launches Entersoft Control Panel.
13/135
A P PL I C A T IO N S E RV E R I NST A L L A TIO N
This type of installation is quite similar to the above one; in this case however we do not restore any databases. Before
you install the Entersoft Server, please make sure that you have already performed the SQL Server Only installation;
otherwise, you will have to configure the database connections manually through Entersoft Control Panel.
First, you are prompted to select the SQL Server that you have restored previously the Zero-Startup and Demo
databases. The SQL Server field displays a list of all the SQL Servers located in the network (the list might take a
few seconds to show all the servers, due to network delays).
If you do not see the SQL Server that you used listed, either you do not have SQL Client tools installed or a firewall or router
prevents its discovery. If SQL Server client tools are missing then the setup can display only a partial list of the network SQL
Servers (in this case you will have to type the SQL Server manually).
Then you can select to connect either with Windows Authentication or SQL Authentication (but you will have to
provide a username and a password for the connection). You can test the connection to make sure that a
connection to the specified SQL Server could be established (you can move to the next step even if a connection
could not be established). These settings are stored in ESDBDef.xml.
Next, you will specify the server name (or IP address) and the port that the Entersoft Clients will use to listen for
connections (these settings are stored in ESClientConnect.xml and ES00Server.config). The proposed port is
depending on the product that you are installing. If you want to change the default, please make sure that you
enter the same port number during the Entersoft Client setup (otherwise you will have to change it via the
Entersoft Control Panel).
In the next step, the Entersoft Client Add On (Crystal Reports) is copied from the installation media. This copy may
take a minute or two (depending on network delays if you are installing from a network drive).
Finally, in the next step you will enter the serial number that you received from Entersoft. If you leave the serial
number as is (all zeros) then the application will enter the demo mode. Remember to activate your software if you
enter your serial number in this step. Using the copy and paste buttons next to the serial number box, you can edit
the serial number in a more comfortable manner.
When the installation is completed two shortcuts will be created in the Start Menu: one that launches Entersoft
Business Suite (Expert) and one that launches Entersoft Control Panel.
14/135
C L IE N T I N S TA L LA T IO N
This type of installation is quite simple; you will have to specify the server name and the port that the Entersoft
Server listens for connections (these settings are stored in ESClientConnect.xml). The server name box lists all
network computers identified by Windows. Please choose the server name (or IP address) of the Entersoft Server
and the port number that you specified during the Entersoft Server installation and press Next.
If you do not see the Entersoft Server listed here, there are firewall or router limitations. You can test the connection to see if
the configuration is valid (the Entersoft Server must be running).
Finally, the Entersoft Client Add On is copied from the installation source to the application directory and the
installation is completed. This copy may take a minute or two (depending on network delays if you are installing
from a network drive). Once the installation is completed, two shortcuts will be created in the Start Menu, one that
launches Entersoft Business Suite (Expert) and one that launches Entersoft Control Panel).
You can install the Zero-Startup and the Demo databases by clicking the link on the bottom of the setup screen. If
a UAC (User Account Control) message is shown, please accept. In the form that appears, you will be prompted to
restore the Zero Startup and Demo databases to a local SQL Server. The SQL Server Instance field lists all the
local SQL Server instances that are registered in the system. The Data File (*.mdf) and Log File (*.ldf) fields show the
path that the database files will be stored (by default these paths are the paths used from the selected SQL Server).
If the SQL Instance that you want to use is not listed in this box and you are sure that this instance exists in the
computer that you are installing the software, then you can type it (a warning message will appear).
Please make sure that the instance that you typed exists, belongs to this computer and that the SQL Service is enabled and
running, otherwise the restore of the backups will fail.
You will be prompted for a username and password for the SQL Server only if it is not accessible with Windows
Authentication.
As long as the database installation takes place, the following progress bars is appearing:
If the database exists already, you will be prompted whether you want to replace it.
Make sure that you are not replacing any database that you need otherwise all data WILL BE LOST FOREVER.
When the database restore is completed, you can close the application.
15/135
Depending on the configuration of Microsoft Distributed Transaction Coordinator, sometimes the Entersoft
Server cannot connect to the SQL Server when they are hosted in different computers. The Entersoft Knowledge
Base has three articles that help you configure the Microsoft Distributed Transaction Coordinator properly. You
can view these articles either by searching for DTC in Entersoft Knowledge Base or by following these links:
http://www.entersoft.gr/default.asp?pid=64&kbid=814
http://www.entersoft.gr/default.asp?pid=64&kbid=903
http://www.entersoft.gr/default.asp?pid=64&kbid=195
http://www.entersoft.gr/default.asp?pid=64&kbid=902
If you want to restore the database backups manually (within the SQL Management Studio) then you have to
navigate to the root directory of the installation source, and then inside the databases folder. In this folder, you
will find three folders named EL, BG and RO.
If your product is BG01 (Entersoft Business Suite or Expert) then open the BG folder.
If your product is RO01 then you should open the RO folder, else open the EL folder.
In this folder, you will find two database backups, named ESEBSDemo (Demo Database) and ESEBSZero (Zero
Startup Database).
You will have to restore these backups and change the names of the databases that will be created to
ESERPDemo and ESERPZero if you are installing Entersoft Business Suite or ESEXPDemo and ESEXPZero if you
are installing Entersoft Expert, otherwise you will have to configure the ESDBDef.xml file through the Entersoft
Control Panel.
F U L L U NI N S TA L LA T IO N O F T H E A PP L IC A TI O N
For a full Uninstallation of the application (e.g. Expert), the following actions should take place:
Uninstall from Control Panel
Entersoft\Expert\CSConfig dir
Start menu: Entersoft\Expert
Delete from registry HKEY_Local_Machine\Entersoft\Expert
Delete the database files
16/135
C R M S TA N D A R D C O NF I GU R A T IO N I NS T A LL A T IO N
The installation of CRMs standard configuration is done by the execution of an EMI file, named
CRM_ZeroMigration_VX, where X stands for the current version of the tool, which is located in the installation
folder at the area ...\ESMigration\ESCRMZero.
The EMI runs through menu Tools and Configuration ->Import/Export data ->Import data (advanced mode).
From this screens menu by selecting Files->Open, you may select the file and import steps are listed.
During the first steps, the data from the Access Database are imported to temporary tables and, next, to the CRM
DB tables.
It is recommended to execute the above-described process occasionally, if any new customization elements are
available.
17/135
P R I N TE R I N S TA L LA T IO N
ESDM installation for crystal reports prints in a dot-matrix printer.
1.
ESDM is specified as the printer (printer with EPSON FX-1050 driver for Windows XP & Epson FX-980 for Vista) and
2.
For EVERY installation, in the workstations that prints audited print outs, you have to specify a printer named
ESDM and EPSON FX-1050 driver for Windows XP & Epson FX-980 for Vista.
Entersoft Document Printer (PDF) Installation
There is the ability to create PDF files, for sending various prints from VIEWS, BITs, documents, etc. The installation
is available at Tools & Configuration / System-Database Management / Install Entersoft PDF document printer. A
Wizard appears where the install area is to be defined -the Entersoft folder is the default- as well as whether any
user of the computer can use it or just the current one.
After successive Next, the installation begins with a progress bar indicator.
With the completion of the installation, an extra printer appears in Windows Printers, named Entersoft Document
Printer and with a defined port, also new EDP (Entersoft Document Printer).
Inside any VIEW, BIT, Documents etc. and, by selecting print preview
on the toolbar, 2 extra icons appear regarding the PDF file type, save,
and the delivery by e-mail.
By selecting Save in Pdf, the save folder of the PDF file is required
and next a progress bar window appears:
18/135
By selecting Send to Pdf, the following progress bar window appears regarding the PDFs creation:
T A X M EC H AN IS M IN S T AL LA T IO N
It is essential to install a tax mechanism for the document marking.
The EBS & Expert applications are cooperating with type A tax mechanisms. Entersoft is certified and has
repeatedly installed in Laser & Dot-matrix the following mechanisms:
1.
2.
3.
There are installation instructions for the above mechanisms in the Knowledge Base at the article QUE-00040.
Other compatible mechanisms:
1.
2.
3.
ALGOBOX (iCS)**
4.
5.
* Specifically for FP600 you have to install Signature processor version 1.2.2 or later.
** They use the same Micrelec driver/software.
ATTENTION! Always check the digital copies and ask your companys accountants to verify accuracy.
19/135
P R O P O S E D I NF R AS T R U C TU R E
1. Server: >=2GB, >=2.8GHz (for 15-20 users)
On the installation server, we propose that there is at least a 2GB RAM and a 2.8GHz processor (for 15-20
users)
2. Client: 512 >=2.0GHz
On the installation terminals, we propose that there is at least 512MB RAM and a 2.0GHZ processor.
3. 64Kbps:1 User, 128Kbps: 3 Users, 384Kbps: ~10 Users
In the case where the free MS SQL Express has been installed, the following requirements must be met:
1 CPU (even if it has been installed on a terminal with multiple CPUS and RAM > 1 GB, the database
system uses only 1)
1 GB RAM
4 GB Maximum DB size
Not supported Enterprise features: Analysis Services, Reporting Services, DTS, Notification Services
20/135
I N S T A LL A T IO N F O L D ER S - S H A DO W I N G
ES/CSConfig
It contains files that have the basic settings of the installation as well as the basic connection
data. Specifically, the most import files are:
ESServerConfig.xml: In this file, the Port number is specified for the communication with the
Application Server. It regards only the Application Server.
ESDBDef.xml:
This file has settings regarding SQL Server and the databases managed
by the Application Server. It regards only the Application Server.
ESClientConnect.xml: In the file, the Application Servers where the Client can connect are
specified. It regards only the Client.
ES/CSFilters
Scrollers (VIEWs)
ES/CSCubes
OLAPs
ES/CSPrintForms
ES/CSLayouts
ES/CSODSRes
ESMigration
ESMasterConfig
Systemic field properties profiles, Document types, Transition scripts, Book measures in xml
form for input in any company.
The folders whose name begins with ES contain files provided with the product, while those whose name begins
with CS contain either the respective files (with the same name) like those having modified for each installations
needs, or new files.
A scroller (VIEW), OLAP or BIT can be modified; therefore, it will be saved in the relevant CS folder. The same will occur if
a whole new View or OLAP will be created (by save as or with the respective design tools). The change can be done to
the server or be transferred to the workstations later, by the Custom Server Version Synchronization procedure or directly
to the workstation.
In the first case, after we complete the changes, we select Upgrade Custom Server Version from Tools and
Configuration/Check versions/Release Updates. A dialog appear, where in the field Reasoning you can give a
description of this change, which will appear at the users at their next log-in. There is the setting Mandatory
Change, which if activated, will not allow the login from workstations, unless the synchronization is complete.
Once all the information above is complete and the Accept button is pressed, the number of custom versions is
informatively appearing.
During the next login in the application of each workstation, a message will appear, informing that a new custom
version exists.
If Mandatory Change ISNT selected, at the dialog
21/135
In the first case, for the start of the synchronization the exit from the application is required, whilst in the second
case, it shuts down automatically and a window appears where the progress of the procedure is appearing as well
as the actions that are being carried out.
Copy (BACKUP) of this custom modification (meaning all the CS folders) can be taken from Tools/System-Database
Management/Application files backup.
NOTICE! This process is executed by the server
When a VIEW, OLAP or BIT is executed, firstly the corresponding file in the CS folder is sought and if not found,
then it is sought in the corresponding ES file. This search is done in the server. If there is a file ONLY in the CS
folder of the workstation, only then does the application read it from the workstation. Much caution is needed in
these cases since, if a custom file is created with the same name as the name in the server, then by executing the
application in the workstation, the workstations file will be ignored.
ATTENTION!
If you change a product VIEW, OLAP or BIT, then the file is automatically copied to the corresponding CS
folder with the same name. This way, the ability to use any future transformations of this element is LOST.
Therefore, it is suggested that any change of a ready-made VIEW, OLAP or BIT to be saved with a
different code in order for its original form to exist in parallel.
22/135
SOFTWARE ACTIVATION
After the installation, it is required to activate the application. A prerequisite for this step is the provision by Entersoft
Sales Department of a Serial Number that corresponds to the selected ES App modules. The activation must be done
from the application server since the procedure ties the server with the computer (hardware).
The direct activation requires an internet connection (one-click operation). In the case where the server does not have
internet access, the activation can take place in any workstation with an internet access and with a connection to that
server. If there is no internet access at all, the activation can take place in two steps by the use of special files (Send a
request activation file-Activate by file).
From menu Help->About, a screen appears in which by
selecting Product User License..., a window appears to
select the activation method.
If there is an Internet connection, select Activation
over the Internet.
If there is no Internet connection, follow the next
steps.
1) Select Create file with activation application
2) Define the save area by pressing the icon
3) Accept and the following message will appear: The file containing the activation application was created
successfully.
4) Next, you have to send the file by email to the address [email protected]
5) Entersoft will send an .a
ans file by the same name
6) For the conclusion of the activation, you have to select this time Activation through file where you select this
file and by Accept, the activation is accomplished.
In case of not activating, it is still possible for temporary access to the system, but for a limited time and with certain
restrictions at the amount of data.
The activation (and the serial number issue) is done PER application server.
For activating new modules, you have to activate again, after communicating with Entersofts sales department.
After a hardware change in the server, reactivation may be required (briefing from Entersoft sales department).
23/135
VERSION UPGRADE
The Upgrade usually includes 4 steps:
1.
Download: The download of the new version must be done from the computer where the Application Server
is installed. You can download it either by pressing the new version information popup or by the application
menu (Tools\Version/Release updates\Download_Install new version). During the download, the application
server can operate (it is not affected). If the download stops for any reason, the next time it will commence
from the point it stopped.
2.
S/W Upgrade: After the download is successfully completed, confirmation is required to begin the new
version installation. After the confirmation, the application servers service stops automatically whereas that
doesnt happen in a console type where we have to stop it otherwise we will have a file access violation error
message. The procedure is designed so that the download and installation can be completed in different steps.
This means that that the installation can occur in a different moment than the download. In this case, when the
procedure is executed again, the installation will commence automatically.
3.
Database Upgrade: After the successful installation of the new version, the next step is for the database or
databases to upgrade at the new form. This is done by simply logging-in the application server (application) as
an Entersoft administrator and selecting yes at the database update message that will appear. Of course,
before that you have to start the application server either by the tray icon or by the services or as a console
(ESSessionSRVConsole.exe). The database upgrade is designed so that in case of upgrades stop, it can
continue from the point it stopped.
4.
Client Synchronization: The synchronization of the workstations starts automatically when the client tries to
connect to the application server that has the new version.
5.
It is possible to install a version to a client without synchronization, a process described in an article at the
knowledge base with code SYS-00033.
24/135
25/135
FORM STRUCTURE
For each entity, one or more data management forms (screens) can be designed. Each data management form is
autonomous. This means that it manages only the elements of the specific entity, those the user can insert or modify,
as well as those related to the entity (views, statistics, etc). The screen areas are:
The horizontal toolbar
The entitys identity fields
The contents hierarchical menu with VIEWS, OLAPS, BITs connected to the entity
the main management areas of the entitys data
The tool allows the customization of only the last (client) areas. Of course, you can insert toolbars in it (therefore
avoiding the horizontal toolbar display), as well as subpages with VIEWS and consequently eliminate the need for the
presence of a hierarchical contents selector.
The tool can be accessed:
1. By the menu Tools and Configuration / Additional development tasks / Windows forms designer
2. By pressing Ctrl-Shift-F8 when a dynamic form is active
Various designer options can be used for creating content and insert fields, titles, icons, virtual buttons, tab pages,
grids with VIEW display in them, and also toolbars. All these comprise the controls of a data management form.
26/135
C R EA T IO N
By selecting New we must:
Define the Entity the form is about and we wish to create. All the entities, for which a dynamic data
management form is supported, are displayed for selection (alphabetically).
Insert a Code (use of Latin characters only is required)
Select the suffix of the (Default=DEF, Quick = QCK etc) and finally
Give a Title to the form which will be displayed in the tab pages
S A VE
The form will be saved in the CSDynamicForms folder as follows: [Entity Name]<_Form Code>_[Suffix]
The [Entity Name] is automatically inserted by the application
The <_Form Code> is not mandatory and is inserted by the user
The _[Suffix] is mandatory and we can select one of the predefined suffixes (DEF, QCK, AUX1, AUX2, NOTE) or
type another suffix.
In the example, we will have the form: CSDynamicForms\ESMMStockItem_Sales_DEF.
27/135
While saving there will be created or updated (if it already exists) the dynamic forms definition file
ES00DynForms.xml in the CSConfig folder.
Information about custom dynamic forms
Product forms are stored in the ESDynamicForms
folder maintaining the above described folder
structure. As long as a product form is modified,
according to the general principals of Shadowing,
the modified form is automatically transferred with
the same name at the ESDynamicForms subfolder in
the CSDynamicForms folder.
When we Open a form, the forms being designed
for the specific installation or the product ones
having been modified, that is the contents of
CSDynamicForms are displayed with different Blue
letters and with a the * character before their title
P U B L IS H TO T H E A P PL IC A T I O N S E RV E R
When we create or modify a form on a client, we can Publish (upload) the form at the application server with
the corresponding option at the horizontal toolbar, in order for it to become available to the other users.
P R O P E R TI ES
From Properties we can change the form Title, define the
Display frame where the basic frame is suggested (as long as
the dataset is about user Interaction, do the other options have
a meaning) and finally we can define the Display of the form
(Tab Page, Modal window or Modeless).
A C TIO N S
From Actions, we can create a shortcut to call the form or its
design directly from the shortcut list, to recreate menu/form tree
in case we need to ask test/call form for the created form, in order
to test the design result.
Also from Form administrator we can view, correct or delete forms.
In this dialog, by selecting Actions we
can export forms in package form to
send or use by another one, as well as to
install from a package we have stored.
If there is a difference between the
ES00DynForms.xml file and the form in the
disk, the form will display in red color.
28/135
FORM DESIGN
The form is a space for inserting various Controls. In the design screen on the left there is a menu of available
elements-control and on the right, there are panels with accessories for elements modification.
E N TI T Y F IE L D S
In the left panel, at the subpage entity fields we have the Dataset available with the chosen Entitys fields. The
fields are displayed in an alphabetical order and at the bottom part, we can see the Latin name of each field as well
as its corresponding relationship. The entity fields are in essence controls with a default behavior.
For instance, by selecting the field/control Trade account we have the ability for drop-down search, with Shift-F3
etc.
Special Fields: These are special controls with predefined behavior. For instance, in a trade document, the liquidity
account lines and the note lines are special controls. Another example of a special control is the Bindable Label
where we can add parametric labels (read only).
Controls: Other controls.
Actions: In Actions there are available the actions and automations of an entity, for their addition to the form as
Control Buttons executing specific functions.
29/135
F O R M S T R UC T U RE
At the same panel, at the subpage Structure there is hierarchically displayed all the Controls already inserted in
the form.
D E SI G N LO GI C
The form is separated in boxes/frames where the various controls are inserted (like HTML table). This way is easy to
define. In essence, a grid system has been created, where in each box only one control can be inserted.
Initially we must underline that the same Form is the Root of the controls where there are defined some of its
basic properties:
If the typical horizontal toolbar will be displayed (DisplayToolbar)
Its display position (ToolbarDocking) & ToolbarStyle.
If the banner line will be displayed, with identity elements
(DisplayBanner)
The default size of the form us defined by Entersoft in pixels (727; 600), a
size we can change, in order to adjust the form to our preferences. The
default size meets the standards for display at 1024x768 (resolution)
without horizontal or vertical scrolling.
30/135
Initially, we select New Section from the Structure panel (container). With this action, a container is placed in the
form which is consisted from a line and a column (a box). By selecting Add Row, Add Column in the panel
Current Segment on the right, we can split this part in more boxes (lines/columns). This will result to have the
necessary boxes to insert the desired fields. Each section we add is added at the hierarchical display of
Structure and it is displayed as a next level.
In the Current segment panel we see the Rows/Columns (Size) from which the section we are in is consisted and
in Current we see the coordinates which are in the part of the box we are in.
The area split is done fairly in boxes with the same weight (size). If in some box we define that it will have
different weight, then this box will have respectively different size compared to the rests of the same section.
If a Row or Column is set as Fixed, this means that it will have a predefined size (for Row ~ 20 pixels and for
Column ~ 10 pixels). If we set some Row or Column as UnFixed, then this will take all the available form space.
31/135
A D D IN G CO N T RO L S
First, we select the box we wish to insert a control, then from the Entity Fields panel we select the control and
double click to insert it in the selected box.
Example
We split the area in 4 columns and 3 rows and we add at the 2
nd
rd
and in the 3 from the entity fields, the trade account name. We Test/Call the Form to see what we have made so far.
For each control we insert in the form, we have available (in the Location data pane) information regarding the
Controls position in its section.
We can resize/merge (to occupy more than one boxes) and to move, in order to ensure the desired
alignment.
Also we can select multiple controls by selecting them (check) from the Structure Tree in order to move them
all together.
On the left side of each control, a label is displayed. By modulating or zeroing the LabelPad, the control takes
corresponding space in the box it is contained, while the label will appear in next left box.
Each control has properties defining its behavior, which are displayed and set in the Field Properties panel:
We can change the InstanceLabel property to change or delete the label.
We can set if a control is ReadOnly so we can see its contents without being able to change them
We can set if its going to have drop-down search ability by changing the VisibleContextButton property.
With the Bindable Label control, we can add in the form some text fields, by filling in the Text property.
The text can dynamically change according to the value of another entity field, by setting the BindingPath
Table.Field property.
We can select a field from a related entity by filling in the LinkFieldChild property, the connector field
(foreign key) e.g. fTradeAccountGID and in the LinkFieldParent property the field of the related (master)
entity e.g. Name
32/135
As mentioned before, adding a Section is adding a control, therefore we can add in an existing box a New
Section, that is a nested section which will behave as a control (nested containers).
This way, we can manage the controls of a nested section in an autonomous way and set a different size or alignment
for the controls of a nested section with regards to the main section.
Example
We add to the initial section 5 rows and in a box, we add a New Section. We resize the nested section to occupy 4 rows & 5
columns. We insert controls and move the whole nested section. We Test/Call the form to see what we have made so far.
ATTENTION!!!
We use nested sections with moderation because the form may become slow and complex.
A very useful control is TAB Control, for we can add many subpages, with every page having a different set of
contents.
1.
2.
First
we prepare (resize,
unfixed)
the section
we want
to insert
.
,
the
We select this area (box)
3.
4.
From Location Data we can resize the Tab, in order to occupy the desired space.
By adding a Tab, a section is automatically added (1x1 unfixed) where the TAB is included inside of it as well as a
Tab Page.
Inside the Tab page, we can now add a New Section, split in boxes and add the desired controls.
At Properties for each Tab page, we can set the text shown as a page header by changing the InstanceLabel
property. In addition, we can set the headers display position, by changing the TabStripAlignment property.
33/135
Example
1. We add 2 new Rows to the initial section.
2. We make the last row of the initial section Unfixed in order to occupy the remaining rows of the form
3. We add a New TAB.
4. We add a section and make it UnFixed to occupy the whole available page space, in order to add some Control on lines/details of
the document.
5. From special fields we add the Cash Control.
6. With Test/Call Form, we see that the Cash control behaves and has the same layout like the document lines (it is the same
thing).
With the previously described way, we can add in a TAB new TAB Pages in order to add e.g. the Note lines control.
34/135
P A R AM E TR I C S E AR C H
From the Field properties panel, with the ShiftF3Params property, we can set the Shift-F3 search on a VIEW
and the result of the search can be set on the field, where we set this ability. This is done by clicking on the
ShiftF3Params property of the specific field:
First we must select the VIEW Area and after the View that will be used for search. We can set if the report will
Auto-run when we call it. Also, at the report parameters we can set proposed values. According to the options
given, we can define as a proposed value:
A Fixed (like)
A Company parameter
An Entity Related Field (e.g. ADStringField1) or a Related Field based on a Relation e.g. Field: Name,
Relation: FK_ESFIDocumentCash_ESFITradeAccount.
The parameter @CTRLVAL with which we can transfer, as a proposed criterion value, the data we have
already typed on the field. E.g *
We can set a Shift-F3 search on a grid (lines) where we must initially select the line field where the search is going
to take place.
Example
Add the search ability on Field1 of the Customer, when we enter the Customers name at the documents header as a
Related Field parameter (Name,FK_ESFIDocumentCash_ESFITradeAccount).
35/135
R E LA T E D VI EW S (C O N TE X T )
It is possible to add a VIEW in a form section. For the VIEW to return results related to the Entity we are in, we have
to customize the VIEW accordingly.
In the previous example, we can add a New TAB in which we can display the View Balance Justification for the
trade account of the document.
We add an UnFixed New Section and from the special fields we select the Related view control.
At the Control properties, we define the view area AreaID as well as the view code FilterID. We can also
define whether the view is executed automatically (AutoExecute) (attention at this point for performance
penalty) and if the views toolbar will be displayed, with the property VisibleToolbars.
The view must have as criterion the GID of the entity and in the views parameter, we must set for this GID a
Property Field relating filter to view assigned with some entity field that calls the view e.g. fTradeAccountGID
36/135
C O M MA N D E X E C U TIO N TO O L B AR S
This toolbar is a special type of control designed in a way to lead to a group of buttons for running programmed
commands. To insert such a toolbar in the form:
1. First, we select the section in which we want it to appear and set the desired dimensions of this section. In this
section we insert the special field Toolbar Commands execution
If we want the buttons size to remain stable whatever the screen resolution, we must take care that the section in which we
insert the toolbar, to have a constant column/row weight.
2. The next step is to set the number of buttons the toolbar will have. For this setting, we select the toolbar and
by right clicking, we display its actions menu. By calling the action Add action panel, the toolbars setting
window automatically appears. The setting of the number of buttons is done by intervening at the values of
the fields number columns/rows.
3. At this point, we are ready to move on and insert buttons to the toolbar. The press of a button has always as
a result the activation of one of the available applications commands. Some of these commands have
predefined functionality, while others are parametric and their functionality is defined while they are inserted
in the toolbar. Let us see first, through an example, the process of adding a predefined functionality button.
Adding buttons of predefined functionality
Say that we want to make a toolbar containing buttons for moving
and deleting lines. At the field Actions Type of the toolbars
properties panel we select Actions Documents.
From the list of available actions we select Move down, Move up and
Delete line and by pressing the button Add, we add them to the
toolbar (mass selection of actions can be done with the use of Ctrl-click
or Shift-click buttons). The positioning of the buttons is automatic, based on the order they appear in the list, but if we
want to change a buttons position, all we have to do is select it and move it to its new position. Also, if we want to
change one of its appearance properties (e.g. font) we select it and, from the toolbars properties panel, we make the
desired alterations. For the changes to be visible, we press the Update button, whilst if we want the changes to apply
at once to all the toolbar buttons, we press the button Update all. Finally, if we want to change the size of a button
we select it, adjust its width/height respectively and press the button Update.
The exact same procedure is followed for any predefined functionality button. Lets see now, through specific
examples, the process of adding parametric buttons.
Toolbar-Items
Say we want to implement through a toolbar, a procedure of selecting items based on the following
specifications.
(1) Items ITEM 001, ITEM 002 ITEM 003 are popular and there must be the ability of direct access to
them by the user.
(2) For all other items, the access must be done through a default tree based on their group/category with the
exception of items of the VARIOUS group, for which the selection will be done by a list.
(3) For GROUP 001 no categories are set, while GROUP 002 is split into CATEGORY 001 and CATEGORY 002.
For the implementation of this specific procedure of items selection, first we add 2 toolbars to the form. The 1
is for direct access items and the 2
nd
st
37/135
To simulate the behavior of buttons GROUP 001 and GROUP 002, in the form design environment, we press
the key combination Ctrl+ related button.
O T H E R C O N TR O L S
With Keyboard Control, we can add a Numeric Pad.
Also, we can add Digital Control where in the BindingPath property we set which numeric/value field of the
entity will be displayed as well as the controls style. E.g.:
for the Payable amount
ESFIDocumentTrade.CurrencyPayableAmount
ESFIDocumentTrade.CurrencyAmountInHandTermAmount
ESFIDocumentTrade.CurrencyTotalRest
39/135
40/135
USER PRIVILEGES
USER PRIVILEGES
Entersoft products support user privileges management for information access, to provide the biggest amount of
possible security at a companys data. There is general privileges customization as well as special privileges to entities
or specific parts of the application like document series, budgets, documents, etc.
User privileges include the total rights of the groups this user belongs to.
The privileges are defined PER USER GROUP and are intercompany. If a user has different privileges at 2
companies, a 2
nd
41/135
USER PRIVILEGES
P R O TE C TE D O P T IO NS
At the hierarchical data list, displayed in the privileges definition screen, there are all those options the system
allows to be protected by a not wanted use/access. These are reports, OLAPs, BITs, entities, entities fields, tables,
various periodic processes, actions, data actions and various customizations.
At the ALL privilege items node you can see all these options. At the rest of the nodes e.g. Commercial
operation-Daily actions, Warehouses, Accounting, etc you can see all the protected options categorized so if
wanted, to forbid or allow global modification. These are protected data segments.
P R I VI L EG E TY P ES
For each protected data, the administrator can set the proper privileges. For each segment, depending in what the
choice is, the capabilities are as follows:
Show-Execution
The show privilege makes sense for
fields, Views, BITs, OLAPs, as well as
entity forms. The execution privilege is
about Actions/Procedures.
Import-Export
The Import privilege is about fields
and entity forms, while the export
privilege is about VIEWs, OLAPs and
BITs.
Edit-Print
The edit privilege is about entities
and fields, while the print privilege is about Views, OLAPs and BITs.
Delete
This privilege is about entities.
So, a user can see a report but has no export or print privileges or has access to a field at its original value, but not
at changing its value etc.
A W A R DI N G O R E X C L U DI NG P R I VI L EG ES
For each privilege, there is the ability to define YES, NO, yes, no and null value. Awarding is done with YES or yes
and exclusion with NO or no.
But what do these values mean and what result does their definition have?
42/135
USER PRIVILEGES
Limitations
1.
2.
The reason the system predicts so many values, is exactly because it allows the definition of privileges BOTH to
higher AND lower levels. Therefore, a data can have either a specific defined privilege or a privilege
inherited by a higher node.
Moreover, there is the chance a protected data for a user having more than one value due to users multiple roles.
For each group the user belongs to (if more than one), different privileges may have been defined. This is the
overlapping privileges or successive privileges phenomenon, which is solved with the following system default
method:
NO/no privilege items prevail those of YES/yes
YES/yes privilege items prevail null
The user gets the privileges (and the privilege items) of ALL its roles
To perform a task, NONE of its roles must define NO/no for this task and at the same time AT LEAST ONE
role define YES/yes for this task.
Recommendations
There are certain rules to be followed in order to guarantee correct process of managing privileges, without errors
and unexpected results:
1.
2.
For each role a YES definition to those data where it is wanted to have access in and null selection to all the rest.
It is better to define YES at a higher level at the privileges group hierarchy, with no need for a NO definition at a
lower level.
3.
4.
If the use of NO is necessary, it would be wise not to interfere with a YES at the same role (unless the roles users
do not have another role).
A special role can be created e.g. user group cost data exclusion and in this a NO to be defined for the tasks we want
to exclude. Next, this group CAN be added to the desired users, in order to be clear FROM WHICH ROLE certain
privileges are cut.
43/135
USER PRIVILEGES
U SE R P RI V IL E GE S LI S T
For the information of each users privileges to be available, the
system must compute,based on the above rules, a calculation
process (relatively time consuming), which is called by Tools/User
privilege/Update privilege list, or by the privilege definition dialog,
from the toolbar:
The task is available from this dialog, in order to update every time we change the privileges. When the process is
complete, we can view each users list of privileges by Tools/User privilege/List of privikeges, using various criteria.
If for instance, we set for the user group Accounting some certain privileges regarding some accounting action as
pictured below:
and next run the list of privileges, then, by executing the scroller Privileges Security with criterion an
Accountings user, filtering the lines with privileges, there are displayed the privileges we have set before:
44/135
USER PRIVILEGES
D O C U ME N T -T R A NS I TIO N P R I VI L EG ES
Document privileges are defined per document series.
In each series, the user groups are defined, as well as the actions they are allowed to do:
Insert Ability to insert document in the specific series in any way
Modify Ability to modify document in the specific series
Delete Ability to delete document in the specific series
Show Ability to show document in the specific series, through Views or BITs
Insert from transition Ability to insert document in the specific series only by transition and not directly. The
selection has a meaning only when Insert is unchecked.
Price/discount Ability to change prices or discounts. By this selection, we can give for instance, the ability
management to a user to change prices and discounts at purchase documents and not at sales
documents.
Deletion of items line Ability to delete items line or items alteration. Applies in cases for instance, of accessory
and items alteration items when the ability for a user to delete or modify them is not wanted.
Cancellation of If this right is not set, then while the document registration screen is open, if by pressing
document entry
By selecting , we can conclude the action (closing the registration form without
saving) only when the credentials of a user with the certain right are inserted, otherwise
the documents form remains open.
45/135
USER PRIVILEGES
2)
Given that in the DOCUMENT SERIES ATTRIBUTES there is the user groups list, by modifying series based on
attributes we can mass award user groups to series whenever we want to differentiate rights:
1. Initially we update the Series Attributes :
2. Then, from the document series list, we select create document series from Actions
st
46/135
USER PRIVILEGES
Expand; add additional mandatory prohibitions under conditions (e.g. lock of quantitative and value elements
of documents that came from a transition or through Credit Control), beyond what the application provides.
NOT apply for certain user groups or for all users, for ONLY some of their elements e.g. to be allowed to
modify company dimensions or informative fields or the salesman etc while a finalization of the relative journal
entries has occurred (wherever company dimensions are involved).
The profiles are set in the customization table (Documents and Series):
The documents data that will enable more customization rights per document TYPE, are divided in 9 categories:
1.
2.
Company dimensions
3.
Stock variations
4.
5.
Informative fields
6.
Salesperson-commission data
7.
8.
9.
In the 1 page (Restrictions excess), which user groups have access to what data category IF the document is
st
locked from certain reasons (at this point we CANNOT select the 1 category- official identification data
regarding quantities-values-dates etc). Depending on the data category, we can unlock for modification only
a certain field e.g. Project or User definable field 1.
Releasing the field modification possibility that this definition provides, ends ONLY with the periods
management information fiscal period closing. Thus, even if the right to modify in retrospect some data of
primary entries is given to some users, an end date can be set to this right, the period during which the fiscal
closing will occur regarding M.I.S (Management information).
47/135
In the 2
nd
USER PRIVILEGES
page (Additional restrictions), for which user group it can be forbidden to modify under
st
circumstances, some data categories even if the program allows the modification (at this point the 1 data
category is available-official identification data). There is a condition script in which we can type the
condition under which the restriction will apply, by using information exclusively from the documents header
e.g. transition step, transition state, user definable fields value etc. The expression management dialog with the
available fields can be used (
).
rd
In the 3 page (Apply in document types), in which document types this profile applies.
Finally, for each transition rule, the user groups that can execute them are defined, giving the ability of defining
certain workflows, done by certain user groups.
A C TIO N- T A SK PR I VI L EG E S
In each task type, at the subpage Access groups, we define in the same way the user groups that will have access
to it, as well the certain privileges (show, modify, insert, delete):
48/135
USER PRIVILEGES
B U D G E T S HE E T P R IV I LE G ES
About Budgets, there is a control and data protection process for EACH SHEET SEPARATELY. When a budget sheet
is created at the subpage Privileges we can define both (
):
Deletion of a budget sheet can only be done if it is in an Initial status and by the user with the most important
role. For instance, if there is an Approval Supervisor, only he can delete the sheet. If neither a Pre-approval
Supervisor nor an Approval Supervisor has been set, then the Compilation Supervisor has the right to delete. If NO
ONE is set as supervisor (Compilation, Approval, Pre-approval), then ordinary authors have FULL rights to the sheet
(modify, delete).
In case a sheet is closed, NOT in an Initial status, and its marginal date has passed, it is NOT available for
modification (a revision must take place).
Finally, if NO user groups are set at the (right) list that are going to be able to run the comparative results in
budget sheets OLAP, then, ALL user will have that privilege..
49/135
USER PRIVILEGES
A T T AC HM E N T P R IV I LE G ES
Defining privileges at attached documents is done by the option classified privileges (Tools/User privilege).
First, we must activate the ability of using classified privileges at
attached documents like this:
We select from the horizontal dialog menu Administration the
option classified tables, so at the appearing list we activate the
table Attachments.
From the same menu, by selecting Search we can recall a
stored classification.
In the Transaction types section, we must select Attachments as an entity
and define for which attachment category that specific privilege
classification will apply.
The options here are the values of the Attachments Category table field
(their description) by which we characterize attachments. If this
characterization is not set, we can select all values. However, it is
important to be used, in order to set a classification only to those
attachments that really need to be protected and not to all.
At the dialog section Segments we select the companys departments, which will participate in the specific
classification scenario (row level), as well as the departments hierarchy. The two icons at the right toolbar do
adding segments:
Add independent Adds a new independent section (of
section
Add subsection
By activating a row in this list, the Code (not modified) and Segment fields are displayed.
In the dialog part Users-segment, we set the users belonging to each segment. A user can be independent or
belong to one or more independent sections or subsections.
The assignment of an existing user or one of the available user groups in a segment, assumes that the segment is
selected (marked) in the segment area.
Then, by selecting from the toolbar
segments.
If the selection is about a user GROUP then, one by one all the users of the group will be added in the segment.
At the list of Available users, we can see at how many segments the users are set to belong.
50/135
USER PRIVILEGES
The extra icons
(Add to
new separate sections) allow to set users in segments (at the selected
segment level).
A very important distinction from all other control points of access
rights is the fact that system administrators are involved to
attachment access controls, in contrast to all other control points,
where administrators have free access.
Therefore, these ones (as users) must ALSO be assigned to one or
some segments, so it can be determined in turn, their access to certain
attachments.
Finishing, from the horizontal menu Administration, we must save the
classification profile.
(Security
51/135
52/135
C U S TO MI ZA T IO N PR O C ESS
A prerequisite for the proper run of such functions is the source and layout definition by the option Import from
file customization.... from the menu Tools->Data Import/Export.
At the displayed dialog, there are 3 subpages:
General: Here we have to set the Source and the data Destination.
As Source, we select one of these: Text, Excel, Clipboard, Scroller (View) and DataSet (xml).
If Text, Excel or DataSet is selected there is the ability to either define the file from which the script will take the
data (as long as it has a standard name and position), or selecting it each time this script is executed.
If a Scroller (View) is selected, it must be defined with the <GroupID>,<FilterID> form. For instance for the
View Negative Warehouse balances per day we have to type ESMMStockItem.ItemNegativeBalances.
If a DataSet is selected, besides setting the xml file, we have to define the table.
As Destination, we can select any Entity of the application.
More: This page is displayed only when as Source a Text, Excel or Clipboard is selected.
53/135
Text The file that describes the layout of the source file with the ability to manage it:
Excel The spreadsheet name and if the 1st line will be ignored in case it contains column names.
Clipboard The number of lines that must be received as no data exists, as well as if the first line should
be ignored, as long as it contains column names.
54/135
Matching: In this page, we define the matching between Source and Destination fields.
There is the ability to view the import data in a scroller (VIEW) form, by selecting the preview icon
. When the
I M PO R T P RO C E S S E X EC U TI O N
The scripts execution is done by the option Run import from file.... from menu Tools->Import/Export data
Import Document Lines from Excel Example
1)
2)
Import customization as shown at picture below, where we set as Source the excel file and as Destination Item
Line entity.
st
At the More page we define the name of excel worksheet and activate the omission of the 1 line with the
column names.
55/135
At the Matching page we define the matching of the excel fields with the items line fields.
3)
4)
Open the document in which the lines will be inserted and after completing the header data Import Lines
from external source... (from Actions) select the EIM file.
The result is the excel lines are inserted as document lines and a process completion message is displayed.
56/135
57/135
ADVANCED IMPORT ()
Data Import with the tool examined in this part, allows us to use any kind of data source and to update any entity
depicted in one or more Database tables like documents for instance. At the following diagram, we see the possible
SOURCE and DESTINATION types that we are going to view later in data import scenarios:
The process is done from Import data (advanced mode) (menu Tools->Import/export data), through this dialog:
At the Source space field we define the root folder the import source files are located. Data can be inserted in
multiple steps compiling a full scenario e.g. to import items, but first we have to import simple tables with their data,
measurement units entities etc.
At the right toolbar, the following functions are available to manage the import steps:
Change of import scenario step turn (move up)
Change of import scenario step turn (move down)
Addition of step
Ability to compose an SQL script (at the opening dialog) for direct execution as an autonomous scenario step
Ability to add the execution of an external application as a step, which is parameterized
Deletion of the selected step
Matching fields (from source to destination), details of which will be viewed later
58/135
I M PO R T S CE N A RIO S T E PS
A data import scenario usually consists of discrete steps. First, the data source has to be decided (excel, access,
other database, etc) and next the way the data are going to be imported in the application-if it is possible to
directly import from source to destination (Entersoft tables) or if, a data import to a temporary table must occur in
order for the data to be edited or for the values of the two areas (source-destination) to be matched, based on
certain mapping (e.g. from an excel file containing the mapping).
In case a data import scenario breaks in steps, special attention is needed to the execution row of these steps. The first
steps must be the data import from other sources (txt, excel, access, etc) to temporary tables, as well as the import of
temporary tables containing possible mappings between source and destination values. Next, before any basic entities
are inserted, the supplementary tables of the application need to be updated (grouping tables or other prerequisite
tables) and then, in the next steps, the insert/update of entities.
For instance, in the ITEMS import scenario from Defacto application, we must first import data from Access to temporary
tables (steps 29,31,33,35,37 item zoom fields, MU - step 53 item elements- ) and for each step, and update of the
relevant application tables follows (steps 30,32,34,36,38)
Next, a temporary field for the VAT Categories matching is inserted (step 54) and finally, an insert at the entities
Inventory Item and General Items follows it.
59/135
Next, we are going to see how each step is customized, what elements it can hold and which actions are made
depending on each steps type.
From the main tool screen, by selecting
At this step, we select the destination, the table in which the import will take place. There are three options:
New table Define the name of the newly created table at this step execution
Existing table Select an already existing database table
Entity Select the entity in which the data will be inserted
NOTICE : By selecting existing table the DB will be directly updated, while selecting entity will update the
application, so the rules & controls of the logical level will be respected and the system will update the DB. This
provides security regarding the stored data, but also ease, since only the absolutely necessary will be updated.
Updating table is used for zoom field tables and in extreme case will the table be preffered over the entity and
ONLY IF it is clear of what data are wanted.
In the next screen
the data source is asked depending on the selection at the first step.
60/135
I M PO R T F RO M A NY S O UR C E TO A N E W ( T EM PO R AR Y ) TA B L E
From Excel
If we select import from an Excel file, the
following additional items are asked:
Select the excel file & sheet.
Confirm or Select the columns data
depending on the creating table
st
61/135
In that case, defining the items if the source file is asked: location, date format, codification (windows, dos, utf-7, utf8), decimal point.
62/135
Defining columns data is also needed. This action is necessary for setting which columns will be used. For those
that will be used, we set a name, while for the others the name stays null. So in order not to import a column (to
be ignored), all we have to do is erase its name.
At this point, there are some additional options available:
Data type change:
The table files that will be created will have the selected type. Necessary
customization for value fields.
Split a column in two: We highlight the field name we want to keep as a first
column and press nter.
Merge 2 columns in 1: We select the column we want to merge with its next and use the relative button
.
Convert (EQUC): We select Convert, choosing how to convert the visual common
letters.
63/135
I M PO R T F RO M Q UE R Y TO A N E X I S TI N G E S T AB L E
If we have selected Existing table in the first step, we follow the next steps:
Select an existing destination table (login database) for direct data import from another table or query. There
is the ability of inserting only new lines or/and updating existing ones.
Select a source (usually the temporary table created at a previous step) as displayed in the following screen,
where the source type is necessarily Database table and a specific table has to be defined.
There is the ability of modifying, limiting the tables data as well as adding extra fields through the filter design
tool, from the button F
Filter design, which is activated by the Filter field (check box). The result (query) can
be used as a source table.
Matching columns (source destination). The value that can be given to a destination column is:
1)
2)
3)
a fixed value
To check if a line is real (to update or insert a new one); we have to set the identification password (to one
or more columns).
ATTENTION! Sometimes we see that no line has been created in the destination table. This means either that
all the lines were inserted at a previous scenario execution or that there is a problem in the IDENTIFICATION
PASSWORDs setting.
64/135
I M PO R T F RO M A T E MP O RA R Y TA B L E TO AN E N T I TY
An ENTITY in the system is one or more tables, which are updated after applying a series of domain (business)
system rules THROUGH the system (not directly in the Database).
If in the first step we have selected Entity, we select the entity from the entities list.
the filter
2) The matching between source-destination. To check whether a line is actual (to update or insert a new entity), we
65/135
To add detail tables (insert master-detail entity), at the entity fields setting step, we have to:
1)
through the
3)
4)
5)
6)
NEVER attempt to insert a master entity (trade account, item, document, etc) directly at the DB because it is
possible to break system rules with unpredictable consequences.
2)
It is often crucial the SEQUENCE in matching columns and it may cause the import process to fail. For instance,
when importing item lines, it is NOT possible the column price to be before the identification of the item
(fItemGID), as applicable i.e. at the typing into the form.
66/135
L I NK T O E X T E RN A L S O U RC E S
From the main data import scenario tool menu, there is the ability to link with external sources.
The following window appears with the following parameters for completion, in order to make the link:
Link name: Provided by the user for easy link
recognition
OleDB provider: Selection between SQLOLEDB,
Microsoft.Jet.OLEDB.4.0, MSDAORA
Data source: Selection of source (sql server). Defining
the SQL User & Password and then selecting the
database.
Supplier extra parameters: e.g. database schema
Data source connection settings: Select the database
and set the user and key for the connection.
Show data source tables: Select the tables and by
apply link (from the toolbar), view will be created in
the BD from these tables (IMPV_).
After completing the parameters setup, there is the
ability to save the link with Save for the case of
reusing it.
67/135
S A VI N G T EM PO R A RY F I LES
There is a general parameter regarding the area in which the temporary files during the data import are stored and
it is set when the application server and database server exist on different machines.
R EA D D B AS E F I LE S
Since Dbase files are going to be used for the data import procedure, if in the computer there are installed
applications using Borland Database Engine (BDE), we must run Tools -maintenance/Read Dbase files / As in
order to set the proper Registry values for reading the Dbase files.
If the computer has the default settings, As option is inactive. With the Restore original settings option, the
previous settings of the computer are restored.
R EC A LL A S CE NA R IO
From the main tools menu, there is the ability of adding the current scenario in shortcuts:
T I M E S C HE D U LI N G
From the main tools menu, there is the ability of time scheduling the scenario in order to run it periodically:
68/135
Atlantis
S1
SEN
Control
At the installation folder, in the folder ..\ESMigration\ the following scenarios exist (folders):
Master
Inventory
Entries
Other
Items
Clients
Suppliers
Debtors/ Creditors
Salesmen, Collectors
Persons
Notes
Fixed assets
Chart of accounts
Series numbers
Lots
Colours/Sizes
Clients without balance ageing
Supp. without balance ageing
Items
Clients with balance ageing
Suppliers with balance ageing
Notes
Fixed assets
Accounting
Lots
Liquidity accounts
Series numbers
Colours/Sizes
Clients
Suppliers
Items
Liquidity accounts forecasts
Series numbers
Lots
Colours/Sizes
Notes
Accounting documents
Bills of materials-Tech.
description
Liquidity accounts
Symbols explanation:
ESEUF
ESDF
Eurofasma Defacto
ESKEF
Kefalaio
ESNTR
Excel
ESCTRLtoNTR
Control
ESCL
CLERP
69/135
Details:
1. Creation and preparation of the ZeroDB database
We suggest installing the ZeroDB database, of the installation DVD, into a NEW database. This Database contains
readymade customization, in order for the companys operation to begin with an easy and quick way, when the
proper needed adjustments are done as well as the data migration from the previous application.
Before we move to the next step, we have to make some customization actions, since the values of some parameters
and elements may influence the data migration procedure. From the menu
Tools/Customization:
st
nd
Explanation
Category GENERAL
Replacement of
person
If YES, then the person's data will be copied to the trade acct. when creating a new
trade acct. with a link to an already existing person. NO is suggested.
Automatic catalogue
items generation
during import of
new inventory item
If the value is YES, then each new inventory item automatically creates a new
catalogue item (as long as it is not linked to an existing catalogue item). The
catalogue item is created with the same code as the item and the same description. In
catalogue item, we monitor alternative and accessory items, technical properties, etc
and it would be wise to update them from the beginning.
Check TRN
uniqueness in
persons
Category GENERAL-SYSTEMIC
Data migration
temporary files area
In case the data migration procedure runs from a client it is important to set an area
visible to both the Application and SQL Server accounts.
70/135
From the option General, from the 3 option, we set Segment sequences
We suggest NOT to set segment sequences for the imported entities, for it is possible the entity codes to be
modified and there will be no matching to the previous codes. There is the ability to change the coding of the
entities, after the import procedure is complete.
th
From the option Organization parameters, in the 4 option, we set the Currencies.
It is necessary to confirm that ALL the currencies of the previous application exist and if not, they have to be
created. At a next step, these currencies must be matched to those of the previous application.
th
From the option Inventory items, in the 7 option, we set Measurement units.
We must check and create the measurement units, existing in the previous application. Attention is needed, in
order to define the proper decimal points. At a next step, we will be asked to match the previous to the new
Measurement Units.
From the option Document and series, we have to set Series for the Open financial year documents.
We have to create series per Branch & Warehouse at the Open Financial Year Document Types that will be used
for the data import. However, at the existing customization (ZeroDB), the used document types, have ALREADY
activated the Automatic series generation, so at the creation of a document without a proper series, this will
be automatically be created, in order for the import to continue uninterrupted.
As long as for the data import procedure we use Dbase file (e.g. Eurofasma scenario), if in the computer the
procedure will be executed, there are installed
applications using Borland Database Engine (BDE), we
have to run Tools / Read Dbase files / As in
order to set the proper Registry values for the reading
of the Dbase files (from Import data (advanced mode)).
2. Copy of Necessary Files/Template Scenarios for Migration
It is NECESSARY to copy from the application folder ...\ESMigration those folders that are going to be used (ESEUF,
ESKEF, ESDF, ESNTR, etc) into C:\ with the same folder names. Those folders contain the proper files, XLS for
matching & EMI needed to run the process.
3. Export data from previous application
A set of reports is demanded for the relevant utility of the other application, in order to export the data.
4. Determination of matching in EXCEL & Import data to EBS/Expert by EMI execution
Data import to EBS/Expert is done by running the corresponding EMI import scenarios. Before any EMI is
executed, it is necessary to set the matching values at the following XLS files, contained in any scenario template:
Eurofasma => ESEUFMAP.xls
Neutral
=> ESNTRMap.xls
Kefalaio
=> KefMappings.xls
Defacto
Atlantis
The execution of each EMI is done by selecting Open from the menu Files
of the Import scenarios dialog (Import data (advanced mode)). We select the
proper EMI and press Run.
Regarding the scenarios using neutral tables (ESSENtoNTR, ESS1toNTR,
ESCTRLtoNTR, ESXLStoNTR), the following steps are followed :
71/135
Creation of intermediate tables for matching and data import: Run at the EBS database in which the import will
occur from query analyzer Create_NTR_Tables.sql (into the folder ESNTR), the script creates intermediate tables
in the EBS database, which are used for matching and data import.
2.
3.
5. Check imported data by printing comparative reports from EBS/Export and from the previous application for
checking (A
Agreements).
6. Adaptation of imported Master tables data, for better management of the new system capabilities (e.g. change of
coding).
72/135
First step is to Login in the Application Server. To accomplish that, we copy the file CSSyncConfig.xml into the subfolder
CSConfig. This file contains the procedure parameters and the elements of the database in which the import will take
place.
It is essential to have a timer, which is added in CSSyncConfig.xml and contains all the areas for the xml files, sets the
period and a series of other parameters:
UserID : User name
Pwd : password
DB : the database in which the import is running e.g. DEMO
Company: Login company e.g. ES
Branch : Login branch e.g. 001
Interval : how many seconds the procedure is running
Assm : FIIMPORTDOCS (running services name)
Description : a description
ID : FIDOCS
Args : Parameters of importing files in the system
In the subfolder CSConfig the file FIDOCS.log is
created where the reasons of a possible import
failure are reported.
Second step is to place the xml files with the
proper data (in the file previously set). The xml
structure consists of a header with the headers
information and the details (document line, special
account line).
Every XML file defines one trade document. The xml
structure is like that:
Timer Example
<ESTimer>
<UserID>esmaster</UserID>
<Pwd>4T0WVxO/s4A=</Pwd>
<DB>DEMO_DB</DB>
<Company>ES</Company>
<Branch>001</Branch>
<Interval>5</Interval>
<Assm>FIIMPORTDOCS</Assm>
<Description>Import Documents from other system</Description>
<ID>FIDOCS</ID>
<Args>c:\Inputxml,c:\inputxml\good,c:\inputxml\bad</Args>
<PauseOnError>false</PauseOnError>
</ESTimer>
73/135
fADDocumentTypeGID
Document type
fADDocumentSeriesGID
Document series
fTradeAccountGID
fSalesPersonGID
Salesman code
ADNumber
Document number
ADReferenceCode
fShippingMethodCode
PaymentAmount
Payment amount
fTradeAccountSiteGID
fDeliverySiteGID
fItemGID
LineType
Line type
Quantity
Quantity
NetValue
Price
Price
If Field remains null or not imported at all, then depending on the value given at the header, in the field
fTradeAccountGID (GUID or code) it will be searched if this code already exists in the table ESFITradeAccount
(based on GID or Code).
If a field name is provided at the Field (e.g. AlternativeCode), then the trade account given at the header will
be searched at this fields values. If located, then its fields will be updated with the XML values for the following
fields, otherwise (if not located) it will be created.
<ESKEY> ESFITradeAccount
<FIELD>Code</FIELD>
</ESKEY>
Code
Name
TaxRegistrationNumber
Person T.R.N.
SitesCode
SitesDescription
Address1
Address2
AlternativeCode
fPostalCode
fCityCode
Area
Telephone1
Telephone2
FaxNumber1
FaxNumber2
Type
Nature
fSpecialAccountGID
SpecialAccountValue
Special account
Main currency value
fPaymentMethodTermGID
CurrencyAmount
NumberOfInstallments
Payment method
Amount or AmountPercentage : percentage
Number of instalments
SCENARIOS
1)
2)
3)
4)
Extra information
The search ability to another field besides Code (with ESKEY), functions as well as for the document type.
By adding at the documents header the field version with value 2, the reading of the fields is done based in the row
the fields are given in the xml.
In all foreign fields GUID or code are accepted as a value.
75/135
Save to xml
In any entity from Actions
In any scroller or BIT from Send into XML form
2)
First, we must declare the folder where the file(s) is/are and next, at the appearing dialog, we have to define if we
wish to insert or/and update entries:
After insert, the xml files are deleted, therefore you have to keep copies if you wish to use them again.
76/135
and next an option screen of the company IN WHICH the data will be transferred.
At the appearing screen, we select the tables transferred from the corresponding column
select the company IN WHICH they will be copied, from the option Companies/Select Company.
To run the process, we select Copy from Actions.
77/135
IMPORT ATTACHMENTS
With this functionality, we can mass import entries (attachments). They are all connected with the login company.
The parameters of this process are set from the option Import entries from Tools -> Import/Export data:
Define the folder where the imported
attachments are
Select if attachments found in subfolders
of this folded, will be included.
Select if the process will be executed in
the Application Server (if selected, the
folder must be visible from Application
Servers computer)
Set document group and category (these
categorizations will be set to all imported
attachments)
Set the type of attachments that will be considered (separated with ;) e.g. *.doc;*.xls or *.*
By pressing the Run, the process of importing attachments is complete. As long as the import takes place, a progress
bar is displayed and a completion message follows.
78/135
OLAP definition dialog) with full information about the installation folder, with proper structure, in order for the recipient to
directly install it.
By this option in a VIEW or OLAP, we are asked for the folder and the name of the *.espak file. If the file already exists, a
screen dialog appears giving the ability of either replacing the file or adding a new scroller/OLAP to the existing file.
So, a package can include elements of many VIEWs and OLAPs.
Install (import) package
To install a package we have to select Install Entersoft packages (Tools ->
Import/Export data). At the appearing dialog, we select Open, so we select the
folder and the package file (espak) we want to install.
Then the contents of the file are displayed for
selection, and we select (mark) that or those for
insertion and select Install (again from menu
File), therefore the installation is done.
NOTICE: Product VIEWs/OLAPs cannot be packaged.
79/135
SYNCHRONIZING BRANCHES
SYNCHRONIZING BRANCHES
It is the process of synchronizing two or more Databases in application level (and not on DB Replication level). Designed
to serve in a parametric way:
the uninterrupted function of a company in case the connection with the head office is cut in an online branch
operation,
the case where the branch is functioning autonomously (offline) and there is need to transfer data to the head
office and
for every possible case of data trade between Entersoft databases (e.g. franchise, salesmen)
The synchronization process is summarized to the following:
Install local SQL Server & Application Server to the branch, which is connected to a local Database
Recording of selected entities for synchronization to intermediate tables from the moment of modules
activation and during on-line/off-line function
In case of communication interruption with centrals, connection to the local Application Server and DB and
normal-continuous machine operation
At connection restore, reconnection to main Application Server and transfer data to and from the Off-line point,
via the intermediate tables (differences update at DBs):
1.
The data registered in the local DB will be transferred to the head offices one
2.
The branchs database will be updated with all current changes of the head office
DISPLAY FUNCTION
In case of failure to communicate with the central in online branch function, the following issues are raised:
1) failure to function the branch with simultaneous interruption of its entries vies by the head office
2) failure to update it for the centrals transactions or new entries
80/135
SYNCHRONIZING BRANCHES
C U S TO MI ZE D A TA B AS ES & C O M PA N IE S
Company parameters
To make the synchronization, we have to set at company level which data will be synchronized. This
customization is done per company.
Changes to entities not synchronized by branches with Set if clients can make changes to entities not
head office are allowed synchronized by clients with head office (concerns
only when installation type is branch).
Entities whose modifications are monitored in Head Set the tables for which changes in server will be
Office and forwarded to branches transferred to the clients.
Entities whose modifications are monitored in branches Set the tables for which changes in clients will be
and forwarded to head office transferred to the server.
Replication type Installation type (server or client).
ATTENTION! While customizing, Replication type
must be Not at all
81/135
SYNCHRONIZING BRANCHES
-{Entity}
Exclusion of certain entities e.g. *, -ESGLAccountingDocument means that all entities will be
synchronized with the exception of Accounting Documents
82/135
SYNCHRONIZING BRANCHES
nd
counting.
In addition, since some of the offline series are audited data, they have to be declared in the tax office.
Offline series must be customized like that:
Offline link with If activated in a series, then:
head office
Of course, for a series to be visible and available the known setting regarding users and
their privileges, must apply.
Auto/Manual It is ALWAYS suggested, that auto offline series, be modified to manual in the main site, in
order to maintain the count of the synchronizing offline document.
Replication "Replication" setting regards whether the documents of that series will be transferred
during synchronization.
For instance, if at the company parameters we have set to transfer from Branch to Head
Office the Trade Documents (ESFIDocumentTrade) then, there will be transferred those
trade documents whose series have this field activated ( ). Trade Documents saved in the
branch and in series not having this field activated ( ) are NOT transferred.
83/135
SYNCHRONIZING BRANCHES
M AI N D A TA B AS E T RA NS F E R TO B RA NC H
After the customization of the main database is complete, we have to transfer it at the branches.
Entries reset
Then we can reset entries of the branch database (offline) per case.
Update Replication Type
At the general company parameters (category Online-Offline) the parameter Replication type must be set:
) Head-office for the online database (GREEN Flag in Status Bar).
) Branch for the offline database (RED Flag in Status Bar).
This change must be the only difference in customization level, between the databases.
After the backup of the main database is complete, we have to directly set Replication Type to Head-Office, in
order to start and register changes at the online database.
C U S TO MI ZA T IO N O F C LI EN T / OF F L IN E PO I N T
Files that must exist and be properly modified in the branchs \CSCONFIG:
Offline-ES00Server.config file
This file contains some changes from the standard application setup. There we must set the standard IP address
of the local SQL Server at the point BindTo=" 127.0.0.1" as well as the local port, which must match the setting
done at the offline-ESClientConnect file in the section of the local server.
Offline-ESClientConnect.xml file
In this file, we have to set the connection with the main application server (online) but with the local one (in case
where the branch must operate in offline mode).
For the main application server (online) we have to set its standard IP address, and for the local (offline) we can
enter 127.0.0.1 with their relative ports.
<ESClientHostInfo>
<AppServerID>NET</AppServerID>
<AppServerDescr>NET</AppServerDescr>
<Host>192.168.1.5</Host>
<PortNumber>8091</PortNumber>
<Offline>LOCAL</Offline> (application servers id the application will seek when connection is lost)
</ESClientHostInfo>
<ESClientHostInfo>
<AppServerID>LOCAL</AppServerID>
<AppServerDescr>LOCAL</AppServerDescr>
<Host>127.0.0.1</Host>
<PortNumber>8098</PortNumber>
</ESClientHostInfo>
84/135
SYNCHRONIZING BRANCHES
Offline-ESDBDEF.xml file
In this file, we have to set the local database.
<ESDB>
<Code>OFFLine</Code>
<Description>OFFLine</Description>
<Server>(local)</Server>
<Database>OFFLine</Database>
<DBUser>sa</DBUser>
<DBPasswd>c64CZ7uz4sI=</DBPasswd>
<WindowsAuth>false</WindowsAuth>
</ESDB>
The three files mentioned above, are the standard files we usually use. We add at their name the OFFLine- prefix and
set them like that, in order during the client sync not to be shadowed by the server files. If the application sees files
with those names, it reads those first and ignores the rest.
H A N DS H AK E C U S TO M I ZAT I O N
Handshake is the process of data transfer between online and offline databases.
The process is executed ALWAYS from the ONLINE Database, in which we have to make the following settings from
the Handshake. (Tools/Application Server/System Synchronization) at the following dialog:
We have to make different entries per company and branch, by completing the following fields:
Code & Description Usually we enter a code & a description representative for the branch.
Host & Port We enter the static IP and the branchs port where the offline application server is
running.
Database We enter the offline databases name as it is defined in the offline application server
and specifically in CSConfig, in the file OFFline-ESDBDEF.xml.
Company We enter the companys code.
Branch We enter the branchs code
85/135
SYNCHRONIZING BRANCHES
SYNCHRONIZATION PROCESS
During the synchronization process the following occur:
E V E N T S R EG I S TR A T IO N
1. In the Online Database (head office) are recorded in chronological order to the intermediate tableES00INBIN all
the events that are happening in the entities defined at the parameter Entities whose modifications are
monitored in head office and forwarded to branches
2. In the Offline Database() are recorded in chronological order to the intermediate table
ES00OUTBIN all the events that are happening in the entities defined at the parameter Entities whose
modifications are monitored in branches and forwarded to head office
The recording is done based on Timestamp (TS field see next) and not at the moment (SD field, which is informatory)
H A N DS H AK E
The process of transferring data is run from Tools/ Application Server/System
Synchronization/Handshake => Actions/Synchronization:
1. Transfer of data from table ES00INBIN of the Online Database to the table ES00INBIN of the Offline Database
2. Transfer of data from table ES00OUTBIN of the Offline Database to the table ES00OUTBIN of the Online Database
From Handshake => Actions/Settings, we set the following:
Action: The row in which intermediate tables data will be
transferred.
Max Number of Entries: The number of entries from the
intermediate tables transferred each time.
Run vertically: First receive from all branches and then send to all
branches.
Automatic repeat: Repeat the handshake until the number of entries for transfer is complete.
U P D A TE F R O M I N C O M I N G SY NC H RO NI Z A TIO N E N T RI E S
After completing the handshake process, the data of the tables ES00OUTBIN for the online database and
ES00INBIN for the offline database, will be inserted to the corresponding entities of the DB (from Tools/Application
Server/Systems synchronization/Update from incoming synchronization entries). A list of entities for import is
displayed, regarding the Login Company and Branch; they are selected and inserted as entities in the company.
At this list are
displayed in the
Online database the
entries of the
ES00Outbin table, as
it has been updated
by the offline
databases and in the
offline database the
entries of the
ES00INBIN tables as
it has been updated
by the online
database.
86/135
SYNCHRONIZING BRANCHES
D E SC R I P TIO N O F P RO C E SS TA B LE S
ES00N & ES00OUTBIN
GID The GID of the line in the intermediate table.
XMLDat The xml of the changing entity in blob data form.
Processed This field has value 1 when the intermediate tables are updated and takes the value 0 when the
step Update from incoming synchronization entries is successfully completed for each line.
When entries take value 0 and at the same time, the column xmldat is Null that means that the
entries are inserted. The only table that does not change value for processed and xmldat is not
zeroed is ES00INBIN of the head office and that because, in it the primary information exists.
TS Timestamp. This field contains in Binary forma the time moment an event occurred in order to
keep a correct order of the entities import.
BranchID Branch code.
SD Information field for the time moment an event happened.
Description Contains the description of the occurring change.
ObjectID Entity
DSType Dataset. That combined with ObjectID consist the Entity logic.
PK GID of the importing entity
fCompanyCode Company code (in intercompany entities e.g. for Persons this field takes the null value).
RelatedGID This field exists only in the ES00INBIN table. It keeps the line GID of the ES00OUTBIT table, if the
import in the online Database came originated from online/offline. Its reason of existence is not to
transfer this line back to offline database, where it was originated.
CType In this field the event type is kept. Its values are:
0=UNKNOWN
1=NEW
2=UPDATE
3=DELETE
4=EXEC_COMMAND
ES00OFFLINE
In the ES00OFFLINE table are recorded per company and per branch, information such as the last date of
receiving and sending data.
It is very important to know that then next synchronization will occur at a send/receive data bigger or equal to
the last send/receive data, recorded in the ES00OFFLine table, for each company and branch (this time moment
is set by the value in the RECEIVETS column).
In this table, one entry is created each time a handshake occurs, so it makes sense only at the ONLINE point.
ES00OUTLOG
Each time a handshake occurs, data from the branchs ES00OUTBIN will be transferred to the respective head
offices one. For capacity reasons, the branch ES00OUTBINs data are initially copied into ES00OUTLOG with the
same values to all fields and next ES00OUTBIS empties. The only column not copied into ES00OUTLOG is
XMLDat, where in there is the largest information amount.
87/135
SYNCHRONIZING BRANCHES
2.
Open New Liquidity account Central Cashiers Branch, set as Automatic Payment
3.
4.
5.
6.
7.
Open Document series; Online & offline, normal & cancelling (e.g. for documents RIN, RCN)
Set at offline series replication & offline link with head office
Set user group
8.
Set at the company parameters the entities transferred from head office to branches and vice versa
From Head Office to branch they will be synchronized Master Entities of Items, Trade Accounts and
From Branch to Head Office they will be synchronized Retail Documents and Trade Accounts
9.
B R A N C H C US TO M IZ A TI O N ( OF F LI N E DA T A BA SE )
1.
Restore backup as an Offline database (due to its size it may have to be restored in sqlserver).
2.
Install EBS (setup installation and copy CS Folders from Head Office)
3.
As long as in the Online database we have already installed an online/offline scenario, we delete from the OFFLine database the following tables, from Query analyzer
6.
Customize shortcuts of offline database in order to call documents with offline series
7.
8.
88/135
SYNCHRONIZING BRANCHES
AUTOMATE PROCEDURE
Handshake and Update from Incoming Synchronization Entries procedures can run automatically from the
application in regular intervals through Timers.
Timers must be set at the files:
.. \ CSConfig \ CSSyncConfig.xml in the Application Server of Head Office
1.
HANDSHAKE
2.
ESIMPORTOUTBIN
ESIMPORTOUTBIN
In the offline point, Handshake makes no sense since the Head Offices Application Server always executes it.
T I M ER H AN D S HA KE
<ESTimer>
<UserID>esmaster</UserID>
Administrator User
<Pwd>gbYcdXCcD8vi3oQ2dIqTzQ==</Pwd>
Password User
<DB>EDU</DB>
Database Name
<Company>ES</Company>
Company Code
<Branch>001</Branch>
Branch Code
<Interval>-1</Interval>
<Assm>HANDSHAKE</Assm>
<Description>1111</Description>
Description
<ID>XXX</ID>
<Args>tcp://192.168.3.10:8091:EDUOFF:ES|THE|esmaster|password|150|250</Args>
<PauseOnError>false</PauseOnError>
</ESTimer>
A log file is created into CSConfig of the application server, named by whatever we have set in <ID>, which is
suggested to be in Latin characters.
If we set in the Interval the value -1, the procedure is not run automatically.
In <Args> we can set eight parameters:
1. tcp://192.168.3.10:8091
IP and port
2. OFFLINE
Database
3. 001
Company
4. 1
Branch
5. Esmaster
6. Password
Corresponding password
7. 150
8. 250
SYNCHRONIZING BRANCHES
T I M ER ES IM P OR T O U T B IN
<ESTimer>
<UserID>esmaster</UserID>
Administrator User
<Pwd>gbYcdXCcD8vi3oQ2dIqTzQ==</Pwd>
Password user
<DB>OFFLINE</DB>
Database Name
<Company>ES</Company>
Company Code
<Branch>2</Branch>
Branch Name
<Interval>60</Interval>
<Assm>ESIMPORTOUTBIN</Assm>
<Description>1111</Description>
Description
<ID>XXX</ID>
<Args>1|BranchID|100</Args>
Parameters
<PauseOnError>false</PauseOnError>
</ESTimer>
Here we see a typical entry in the CSSyncConfig.xml file of either the head office or the offlines server.
This entry indicates that every 60 seconds the service (ESIMPORTOUTBIN) that checks Incoming will run and if it
finds incoming synchronization entries, it updates them one by one.
In <ARGS> section, we have set 1|100.
st
The 1 argument (1) means ContinueOnError = true, i.e. if as the system processes the entries, one of them cannot be
updated, the system will skip to the next one.
nd
The 2 argument (Branch) is optional and used when we want to filter the import of entries to the specific branch.
rd
The 3 argument (100) means that each time the service is running, it will process entries per 100 and not all at once.
Therefore, if there are e.g. 2000 incoming synchronization entries, the service will process them per 100, without
spending memory for 2000 but also without overloading the system.
90/135
SYNCHRONIZING BRANCHES
TROUBLESHOOTING
Possible problem
If in customization NO entities are set for synchronization, this will result into new entries being recorded without
updating the intermediate tables for synchronization. These entries must be transferred to the other DB, with the
same GID.
Solution by Update from XML
1.
At the Online installation, through a proper scroller we locate the master entries we want to export in order to
update the offline installation. We run the scroller and select the needed entries (or, if we want all entries, we
select none).
2.
3.
We define the folder the XML files are saved and press Run.
4.
5.
6.
7.
The exact same procedure is used in case we want to transfer Master entries from the offline installation to the
online one. The only thing that differs is the start and end point.
Possible problem
Timer set in CSSyncConfig.xml is not running
Cause-Solution
1.
Check the messages in log file at CSConfig named after the timers <ID>
2.
If no log file exists, check whether the names of the files CSSyncConfig.xml & OFFLINE-CSSyncConfig.xml are
correct.
3.
Check the above files if they contain Greek characters and change them to Latin or save the file with Encoding:
UTF-8.
4.
Start the application server from DOS Prompt and check if it displays errors.
5.
91/135
SYNCHRONIZING BRANCHES
Possible problem
Synchronization not running when process runs in Windows 2000 machine: TransactionAttribute.Isolation is not
supported on the current platform.
Cause
In Windows 2000, Mode transaction Repeatable Read is NOT supported.
Possible problem
Error on Import Incoming Synchronization Entries: No changes allowed in entities not synchronized from branches to
Head
Cause - Solution
If head office sends an item deletion with delete catalogue item we change at the OFFLINE databases the
parameter Automatic catalogue item deletion if the last relevant item is deleted to FALSE.
Possible problem
At Handshake some entries between online and offline point, are not synchronized, while the intermediate tables
contain non-transferred entries.
Cause - Solution
Check if Servers of Online and Offline points have the same date and hour settings.
Since in the ES00OFFLINE table is recorded the Time Stamp of the last synchronization (send & receive) per branch,
due to time difference the following can happen: Say that the last Handshake is done at 2007-01-11 11:03 so the
head offices ES00OFFLINE table will be updated with the above Time Stamp. If the branchs Server has e.g. -2min
difference with the Head Offices Server and after the Handshake an entry is recorded in the branch with Time 200701-11 11:01, this particular entry will not be transferred with the next Handshake.
92/135
A typical example of its use is the communication between head office and branches, so the branches send their orders
and daily entries to head office and the head office send their invoiced orders and items-values to branches.
The interchanged data between systems are strictly in sequence order to ensure the row these are imported to the
other side, and they are in text file form (fixed length delimited) to be readable by non-Entersoft systems as well.
Communication is achieved via WCF-services in order to be technically flexible the way nodes are connecting to the
central (http, VPN, wshttp, net.tcp ..) and no constant link is required. Finally, communication by e.g. e-mail or any
other non-automated way (manually) is possible.
Whole management is central and split in four big sections:
93/135
HISTORY LOG
It is about the main monitoring console of systems communication and of various events.
94/135
Given the ability of making management form according to our needs, we can insert
st
at the desired place the user defined fields e.g. at the 1 forms subpage.
If the change regards (like in the serial numbers example) a field belonging to only
one entity/form, no further action is required.
But if this change regards a field which either itself corresponds to zoom table (like
for instance horizontal dimensions Dimension 1, Dimension 2) or its displayed
in many application entities by the same name (and meaning), then its name must
change TO ALL TABLES.
To find more easily in which tables this field exists, the following should be done:
Right click on the screen of User Defined Fields -> Debug -> Global Grid Settings
95/135
By pressing , the filter line appears, where in the column Name it is possible to select the seeking field e.g.
Dimension 1.
In cases such of Dimension 1 which is also a table, we must ALSO rename the Table:
The changes are stored in the file CSODSRes.xml and into the application folder CSODSRes.
96/135
Based on customization, additional properties are displayed in a special subpage of the management form called
Additional properties:
Next, we can set Properties categories. Categories are a simple grouping, according to which the new fields will be
displayed in the subpage additional properties.
Finally, we create the Properties options (from the same menu) each one of which is a sum, a combination of
properties added in entities (through User set preference field of each entity).
In sets, we define the RELATIONSHIP between properties Categories and Properties (in which category each property
belongs), SUGGESTED VALUES etc.
With Insert or Double click to this list, the group definition screen is displayed:
98/135
2.
Default vale, if wanted, that is the suggested value for the property
Finally, in additional properties, at the corresponding entitys subpage, there is one more (not visible at first) column
named IsMandatory (a mandatory field from the user). Depending on what is registered, this column can take 1=true
value by a proper fields property:
In the Provided it is valid, we can type an expression, the condition by which completing a field is mandatory e.g. if the
property is width, height and if the item is group X type etc.
Finally, properties sets are defined in
general parameters for some entities.
If in an entity which provides for property
set per entry (item, trade account), this
field is NOT complete, then the general
parameters set group will apply:
After these customization actions, and at the
next application login, the new fields
(properties) are available to items, with the
above functionality.
99/135
S T R U C T U RE & C O N T E N TS O F F IE L D P RO PE R TY P RO F IL E S
A field property profiles form is split in three sections:
st
First, we set a code and description that must be understandable, regarding the profiles functionality. The code
is suggested to begin with CS to avoid problems with systemic field property profiles (possible convergence).
The same code, copy it and to the mandatory field International code. A basic element is the selection of the
proper type this field property profile is about (about what entity). In all entities, besides documents, there is the
field Run if in which we set those conditions which if satisfied, the profile will run.
2
nd
Each profile can contain many functions/actions e.g. value assignments, checks, etc. Each command will be set in
a different line. Each line concerns a specific dataset field of the entity (master or detail) we have selected. In
each line:
1.
First, we set the Table of the entity the lines field belongs to.
100/135
2.
In Property type we set if the specific profile line will Check, Assign Value or Change Approval Application.
3.
In Field, we set the Field on which the specific line will apply.
4.
In Provided it is valid we type the condition (if needed) under which the specific profile command-line will
be executed.
A variable message for instance in a field property profile checking at the items registration whether a retail
price smaller than the wholesale price is given (by mistake), would have the following expression:
"Retail price "+RC("RetailPrice").tostring()+" is smaller than the wholesale price "+RC("Price").tostring()
The provided it is valid field in the case of message is necessary to complete.
If the message is a warning, it will simply appear as a tooltip with an indication next to the field:
If in the Property type we set Change approval application e.g. for changing a trade accounts pricelist we have
to set who is the authorized user group that can approve the change.
101/135
If at the property type we set Assign value, besides the field in which a value will be assigned and its possible
condition (at the Provided if valid):
1.
We can activate the field Required field, so the user will have to provide a value (different than NULL) in
this field, otherwise saving cannot be complete.
3.
We can activate the field Preserved, so the user will not be able to change the value set by the field
property profile (its content is preserved, even when null).
In case of value assignment, we have to set when the Assignment will take place. This is defined in the 3
rd
section.
rd
The option During initialization (of data row) is used for default values assignment.
Attention is needed at the condition Provided it is valid when a field value needs NOT to be null or zero
(0), for a check or an assignment to occur (e.g. if we ask field value or reference to a field where we
assume that it has ALREADY a value or in case of a division, etc.)
Each definitions setting must be done following the row in which the fields are displayed in screen. Their placement
is such to lead us in logical expressions.
102/135
Use of field property profiles is not limited only to documents but is also supported to other entities:
Person-Trade account
Trade account
Item, fixed asset, catalogue item
Bill of material
Lot, Series number
Note
Project
Special account
Ledger account
Ledger entry
Costing folder
Budget sheet
Task
Contact
Campaign
Service request
Contract
Contract term
C O M MA N D S & F U NC T IO N S F O R U SE I N E X P RE S SIO N S
ES Functions
1.
RowColumn (RC): Use of RC function returns the value of a field from the current line. Another use of RC is
the retrieval of a field value not from the current column and field, but from the current row and field of
another table, which is part of the current registration screen.
For instance, we could read the date of a document while a discount is recorded in an item line, in order to
allow the use of discount if the date does not belong in discount season. We will type the following
expression:
RC("ADRegistrationDate","ESFIDocumentTrade")
The first argument is the trade documents field and the second is the tables name from which we are
going to read the value. The difference between using RC and ESLUFK (see below) is that value searching is
not done in values recorded in the database, but in data recorded at the time of the values search.
2.
ESLUFK function: This function is used when we want to find a value in a database table, connected with
the value of a field from the current line. For instance, we want for the lines item to find the items
description. ESLUFK syntaxes:
ESLUFK(current line column name, destination table field name)
and for the above example where we look for the items description, we have to type:
ESLUFK("fItemGID","Description")
3.
ESLUA function: We use this function when we want to find a value from the database using a line fields
value. It syntaxes:
ESLUA(line field name where we read the criterion value, sql expression to get the value)
If for instance we want from a note line (ESFILineNote.GID) the value of the notes field Beneficiary
(ESFINote.fTargetAccountGID) we will type the following expression:
ESLUA("GID","SELECT ESFINote.fTargetAccountGID FROM ESFILineNote INNER JOIN ESFINote ON
(ESFILineNote.fNoteGID = ESFINote.GID) WHERE ESFILineNote.GID = @ORGVAL")
In another case, where we ask the GID of the trade account (ESFITradeAccount) when its persons code
(fPersonCodeGID) matches the receipients (fDeliveryPersonGID) of the current line in the current company,
we will type the following expression:
ESLUA("fDeliveryPersonGID", "SELECT TOP 1 GID FROM ESFITradeAccount WHERE fPersonCodeGID = @ORGVAL
and fCompanyCode = ##(ESCOMPANY) ORDER BY Type")
103/135
ESParamValue : Returns values from the login session and from the company parameters, for instance:
ESParamValue(ESBRANCH)
ESParamValue(ESBRANCHGID)
ESParamValue(ESUSER)
ESParamValue(ESCOMPANY)
User : +ESParamValue(ESUSER) + Branch : + ESParamValue(ESBRANCH)
VB Scripting
1.
Sqlscalar & String.Format: In many cases we need to search in the database to retrieve a value which its
search is not just a lookup executed by a ESLUFK but its done only by running a query in the database,
which (attention) must return ONLY ONE value. The command syntaxes:
SQLScalar(String.Format(SELECT .... FROM ......WHERE ='{0}' and field={1}", RC(fieldname1),
RC(fieldname2)) , Nothing).
To make the above more understandable, all we have to do is think how a database query would be
executed with criteria from the current line. SQL query syntax is exactly the same we would type in any sql
editor with the difference that here we have parameters like {0},{1}... etc, which during the querys execution
will be replaced by expressions that follow at the second argument in the Stringformat, with their displayed
sequence. For instance:
SQLScalar(String.Format(SELECT count(*)
FROM ESFIItemEntry AS ESFIItemEntry
WHERE (ESFIItemEntry.fTableField1Code = '{0}'and fDocumentGID<>'{1}'",
RC("fTableField1Code"),RC("fDocumentGID").tostring()),Nothing) >0
The above counts the number of item entries (ESFIItemEntry) which in the code of Table 1
(fTableField1Code) of the entry, have the same value with the value of the Table 1 from the current line
(RC("fTableField1Code")), while the document (fDocumentGID) must NOT be the same with the current
document (RC("fDocumentGID").tostring())).
Here it can help the building of the select, the use of the tool report design, where after we have made
the SQL statement we can copy it and use it in the expression.
Attention is needed in the use of SqlScalar at Check type property for the message to be displayed. In that
case it would be wise to avoid its use, since that would result to constant servers activity with queries that
would decrease application speed.
2.
Compare to Null Set Null: If we want for instance, to check if the item code in a line item is complete, we
would type the expression:
RC("fItemGID").Equals(System.DBNull.Value)
3.
Logical expressions IF .. THENELSE (IIF): To create such expressions we use the IIF function:
IIF(checked condition, action run if condition is true, action run if condition is not true)
E.g. if we want to create an expression that checks the Price fields value of the line item and inserts 10%
discount if it is bigger than 100, otherwise insert 0%, we have to type in the value assignment expression for
the field Discount 1:
IIF(RC("Price")>100,10,0)
104/135
tostring( ) function: Used we want to transform an expression type to text and syntaxes as:
Expression.tostring()
The advantage in using this function is that if the expression is null it always returns a null string, therefore
we forestall problems which many times a created when comparing to null. E.g.:
RC("fitemGID").tostring()=
5.
Transforming date to string (ToString("yyyy/MM/dd")): By using the CDate function, but needs attention.
CDate(RC("ADRegistrationDate").ToString("yyyy/MM/dd")
Here we transform the value of the date field ADRegistrationDate into string and we can use it in future
expressions.
6.
EXAMPLES
Implementation of control if items value bigger than 100 then variable message:
Section
Lines
Table
Item line
Property type
Check
Warning
No
Line type
Inventory item
Field
Item
Provided it is
RC("Price")>100 (the expression is created from the Create expression dialog and suggests
from the current column and row RowColumn to read the Price field)
Expression-Message
Implementation of assignment update items discount by 10 if its value is bigger than 100:
Section
Lines
Table
Item line
Property type
Assign value
Line type
Inventory item
Field
Provided it is
RC("Price")>100
Value type
Specific
Price
10
Table
Item line
Field
Price
105/135
Implementation of assignment update Amount 1 of the header with the clients turnover:
Section
Head
Table
Trade document
Property type
Assign value
Field
Amount 1
Provided it is
Value type
Expression
Price
And in the Run when 1 event, type After field change in the table Trade document, Field Trade account.
Implementation of assignment update Amount 1 of the header with the clients turnover in the documents
Business unit:
Section
Header
Table
Trade document
Property type
Assign value
Field
Amount 1
Provided it is
Value type
Expression
Price
And in the Run when 2 events, After field change in the table Trade document, Fields Trade account and
Business unit .
Implementation of assignment update Amount 1 of the header with the clients Turnover of the last 6 months
in the documents Business Unit:
Section
Header
Table
Trade document
Property type
Assign value
Field
Amount 1
Provided it is
Value type
Expression
Price
And in the Run when 3 events, After field change in the table Trade document, Fields Trade account,
Business unit and Registration date.
106/135
E X P LA I NI N G SO M E R E A DY - M A D E E X A MP L ES
Next are explained some functionalities, implemented in customization level at the available (in master config)
field property profile ES-4-STCOUNT-SPOT:
On line 11 of the expression we have:
RC( "UDFValue2","SI_Analysis")
Here its described a behavior in the line item analysis, connected to an item line (LineItem) with the internal
relation SI_Analysis and we ask for the value of a field (UDFValue2)
On line 8 in the expression we have:
"The item "+ ESLUFK("fItemGID","Code")+" demands entering size."
Here we have the case of using a variable message consisting from the items code ESLUFK("fItemGID","Code")
and the combination of some text.
On line 10 in the expression we have:
ctype(_dr.table.dataset.tables("ESMMLineItemAnalysis").select(string.format
("fMasterLineItemGID='{0}'",RC("GID").tostring()))(0),datarow)("NumericField4")
The above is a special case of an expression, that looks like a visual basic code. It returns the value of numeric field 4
st
(NumericField4) of that moment in the 1 (0) row of the line item analysis table (ESMMLineItemAnalysis) with baseline
(fMasterLineItemGID) the current item line (LineItem).
On line 3 in the expression we have:
IIF(RC("StringField1").tostring() ="1", RC("UDFValue1"),
IIF(RC("StringField1").tostring()="2",RC("UDFValue2"),RC("UDFValue3"))) - RC("UDFValue4")
Here we have an IF..Then..Else... case, translated as following: if string field1 has price 1 then value1 else if string
field1 has price 2 then value2, else value3
On line 1 in the expression we have:
SQLScalar(String.Format(SELECT isnull(sum(isnull
(ESFIItemCurrentBalances.DebitQty,0) - isnull
(ESFIItemCurrentBalances.CreditQty,0)),0) FROM ESFIItemCurrentBalances WHERE
ESFIItemCurrentBalances.fCompanyCode = ##(ESCOMPANY) AND
ESFIItemCurrentBalances.fWareHouseGID='{0}'AND
ESFIItemCurrentBalances.fItemGID='{1}'",RC( "fWareHouseGID"),RC
( "fItemGID")),Nothing)
Saves in Amount1 of the line, the items current balance.
D VA N C E D SC R I P TI N G
For experts of the programming model ADO.net, it is available an internal variable named _dr type datarow, by
which becomes available the whole entitys dataset through our current datarow. This means we can manage data
not necessarily stored in the database. For instance:
Assign the sum of Inventory Item lines Quantity into documents header:
_dr.Table.Dataset.Tables("ESFILineItem").compute("SUM(Quantity)","LineType=6")
Check if there are inventory item lines (LineType = 6) :
(_dr.Table.DataSet.Tables("ESFILineItem").Select(String.Format("LineType=6")).length >0)
Check if the document is in Insert state:
not rc("gid").equals(system.dbnull.value) andalso _dr.rowstate.equals(datarowstate.added)
Check if the document is in Update state:
not rc("gid").equals(system.dbnull.value) andalso _dr.rowstate.equals(datarowstate.modified)
107/135
D E SI G N M E T HO DO LO GY
To design a field property profile it would be wise to follow some steps for its easier syntax and early error
detection.
COMPOSITION
COMPOSITION
SEQUENCE
EVENT DEFINITION
EXECUTION CONDITION
EXPRESSION DESIGN
1. Initially we have to design expressions and check them separately for their consistency.
2. Next, we have to set the execution conditions of the specific check/assignment/approval.
3. Then, we have to define the events, which will be set, for each assignment to occur in time.
4. After that, we have to decide the proper logic sequence of the assignments (some assignments may require
some others)
5. Finally, we have to compose a whole, logical, functional plan to perform the whole expected functionality.
All design parts (expressions, conditions) must be gradually-separately checked.
Highlights
ALWAYS executed in the CURRENT ENTITY
They may cause PERFORMANCE PENALTY
Attention is need in NULL CHECKING
108/135
AUTOMATIONS
T A R G E T F U NC T ION
Used for automatic creation or update or deletion of one or more entity entries based in one or more source
entity entries.
They set at least one map profile based on which we can create or update an entry.
Called by a form (with a virtual button or menu action) or by a scroller, with the ability of scheduling in case of
a scroller.
They define whether the created entries will appear in a window or their execution will be UI less
A U TO MA T IO N TY PE S
Form automations
Source: Entity
Report automations
Source: Result set (entries) of report
Insert
Update
Map profile
Source: Entity or Report
in the horizontal toolbar of the form or report) to press Shift+Click on the automation we are
interested in.
109/135
I M PL EM E N TA T IO N E X AM PL E S
Form automation
2.
3.
Automation title
4.
Select icon
5.
6.
7.
Choose assignments:
Document type
=> Fixed: SOR
Trade account
=> Field: GID
8.
Save automation
From the option Automation parameters we add a line with a desired display name, the parameters type
and in the search filter we can set a report to return the values, which the user will select from. Otherwise, we
110/135
may not set a Filter and the user will type the code. There is the ability for this parameters completion to be
mandatory (in column Mandatory).
Next, in Field value assignment, we must, at the assignment regarding the document type, instead of fixed
value to set into type Automation parameter and in the Parameter to select the specific parameter, previously
created (Document type).
From option Valid for forms we can define in which reports the automation will be available in (reuse
without rewriting it as form automation). In this case, the report opens the form of the source entity (here
the customers form) to create the document and finally, shuts down by itself.
Report automation
2.
3.
Automation title
4.
Select icon
5.
Map profile
6.
7.
111/135
Execution method
112/135
AIL/SMS ALERTS
There is the ability to manage SMS messages in the application via bulk-sms, the national carrier Clickatell Bulk sms
Gateway (http://www.clickatell.com/) and CosmoteSMS.
Initially the user must select from the menu Tools -> SMS management and choose Connection settings and in the
displayed window to fill his given credentials by the corresponding service carrier.
This option reads a BulkSMS- file, which initially does not exist, having as a result
the display of an error message. Ignore it and next the window appears where you
insert the Code, the Key and the mobile phone number from which the messages
will appear to be sent from.
By selecting Accept, a file automatically is created in CSConfig named BulkSMS,
holding all connection settings.
Next, in the same menu we have the following functions:
Balance query
An information message appears with the accounts balance query.
Add SMS units
It regards the ability to add SMS units by typing in the below form the coupon number, one can be provided with by
the service carrier.
Send SMS
Displays a send sms form where we type the recipients mobile phone and the message.
Additionally, the system, for some specific processes, provides a way of automatic notification by eMail or SMS.
Notification for taking backups
We must complete the relevant general parameters in the Parameters Category General-Systemic:
113/135
114/135
SEND FAX
Sending FAX is supported through the applications environment. This function is activated by the Send action in VIEWS,
where in the displayed dialog we can select in the Send the option Fax. The form is common for sending emails and for
sending FAX.
To send Fax the application is based on Windows FAX Service, which is available in Windows 2000, Windows XP and in
the family of Windows 2003 Servers.
Customizing Windows Fax Service is the responsibility of the IT managers or the authorized partners.
Setting the necessary parameters to activate sending files via Fax is done from the menu Tools/Customization, in the
company parameters, at the CATEGORY: Send FAX:
The final parameter gives the ability to use a Fax Server different than the Microsoft Windows Fax Server, but which is
based on Microsoft Exchange Server (e.g. faxmaker).
115/135
Others from menu actions of a management screen like e.g. marketing campaign
And others from a relative button in dialog toolbars like e.g. send dialog from a report or the posting dialog.
116/135
C U S TO MI ZA T IO N
In the time schedule settings definition dialog, we can set:
setting date, time or every night by setting time, every 1 Monday of the month, etc, based
either on system events (if the system is idle i.e. 30 or in every system boot or during
user login).
With each option, the settings area on the right is modified.
Results recording
117/135
S C HE D U L E D TA SK S
Tasks that can be time scheduled are the following:
Views Export data
Backups of database
Compression & Database reorganization
Synchronization of terminals
Import data (advanced)
Stock valuation process
Retail documents packing
Posting of documents
Finalization of ledger entries
Readjustment of sales values
Report automations
Recalculation of financial correlations
CRM marketing campaigns
CRM Tasks Salesmen activities
If we are going to time schedule Synchronization workstations, this would make sense to be done BEFORE we update the
Database, otherwise the synchronization will never happen. The user is not needed to be logged-in to the application, as long as it is
logged-in to the workstation.
I NFO R MA TIO N
In menu Tools/Scheduling there are two information reports about the time-scheduled tasks.
1.
Scheduled tasks: In this report are displayed all the time scheduled tasks created in reports.
2.
Task execution log: In this report is displayed the history log of tasks execution. The contained information are
in a first level the Assignor, the user who created that time scheduled task, the workstation from which its
executed, the Creation date of the task, the Activation of the task, the Last fact date and the last fact result with
the corresponding messages in case of failure and in second level, analytically for each task execution, its start,
end and result.
118/135
N OTI CE
Time scheduling tasks, especially those regarding heavy or common used procedures must be done
cautiously as regards to when it is executed and how often. If for instance we schedule by mistake, the
database backup to be executed 3 times a day when the system is loaded, then the Servers
functionality will be severely clogged.
To time schedule tasks, a user must have proper privileges.
Execution of all time-scheduled tasks takes place in the Application Server and not in the workstation
from which the schedule was done. Therefore:
1.
We should confirm that the Server is going to be active and available (e.g. not turned off) at the
hours it is programmed to run tasks (Application Server and Database Server).
2.
In setting how often a task will be executed, the session used by Windows to run the scheduled task
will be always ONE. Otherwise, if we schedule a task based on time, a new scheduled task will open
each time. Therefore, if we have set to run a task every hour, 24 sessions will open, each session using a
user license. However, if we set it, at Process recurrence, the session running will be always one,
consequently one user license.
119/135
st
1 level: Field, Max Date (date of last change), Min Date (date of 1 change) and Number of changes
st
2 level: Date of change, Previous value, New value, User and information on entry on which the change has
been made (Code and Description).
120/135
EVENT LOG
In menu Tools/Users action log there are options for complete information of the systems administrator, regarding the
occurring events:
Process messages log: In this report are displayed all those processes designed to keep track of their results, with
information for the user, workstation, execution time as well as the result.
Such processes are Stock valuation, Closings, Recalculation tasks, etc.
Event log: In this report it is displayed the history of all events designed to keep track in the system when they occurred,
with the following elements grouped by date: User, Date, Event Code, Event Description, Workstation and Type
(Information, Warning, Error).
Such events are user login, entries deletion, approval authorization, backup, restart server, version updates, recalculation
tasks, formal printings, etc.
121/135
System upgrade log: In this report is displayed the versions upgrade history (date, user, station, company).
2.
All deleted entries are copied into a TEXT file, which is stored in the TEMP are of Application Server.
122/135
Next, by confirming the deletion, the erase of the selected folders is complete.
ONLINE USERS
Called from menu Tools/Application server and displays the users currently logged in the application.
Extra information includes workstation name, its IP address and the port number.
123/135
If we answer yes, the besides the compression, database reorganization occurs and more specifically, the following
maintenance tasks:
1.
Recreate indexes
2.
124/135
DATABASE BACKUP
A necessary periodic task is Database backup. It can be done either by a users action whenever wanted, or time
scheduled for automatic backup (recommended).
The task is called from menu General/Backups, where a list of the created backups is displayed. From Actions of the
view toolbar, we must select Create new backup:
From the same point, we can time schedule backups from the option Periodic backup scheduling. In case a weekly
backup us scheduled, then each days backup replaces the same days copy from the previous week.
Necessary customization is completing the relative general parameters (CATEGORY: General-Systemic):
125/135
ENTERSOFT COMMANDS
There is the ability to run a scroller/OLAP from a file outside of the application as follows:
Open a txt file
Create scroller/OLAP shortcut and by right-clicking ->Properties the following screen appears
126/135
M A NU A L EX EC U T IO N
First, we have to create the .sql file in the folder CSConfig\CSSQL (if it does not exist, we have to create it).
Next, we select Run SQL from file from menu Tools -> Data Import/Export and a window appears for us to select
the file to run.
A U TO MA T IC T I ME R E X E C UT I O N
Execution is done through an ESTimer at the Application Server and the settings are defined in the
CSSyncConfig.xml file. We open the file ../CSConfig/CSyncConfig.xml and set a new timer as follows:
<ESTIMER>
<ID>UPDSQL01</ID>
<DESCRIPTION>Update the state of the stock items</DESCRIPTION>
<USERID>esmaster</USERID>
<PWD>ddbBO+yOOJ1mtlZQX1ajaVre/QAAp3kq</PWD>
<DB>ESXprtZero</DB>
<COMPANY>001</COMPANY>
<BRANCH>5</BRANCH>
<INTERVAL>0</INTERVAL>
<ASSM>SQLFILE</ASSM>
<ARGS>UpdateStockItems.sql</ARGS>
<PAUSEONERROR>false</PAUSEONERR>
</ESTIMER>
To run the specific process, it is required:
Where
ID : Timers unique code
Description : Timer description
UserID : User code
PWD : User password (encrypted)
DB : Database code
Company : Company code
Branch : Company branch code
Interval : Timer interval in seconds
Assm Running process code
Args : Timer execution parameters
PauseOnError : Parameter to stop the process if an error
occurs
User must have access both to the company and the branch defined in timer.
2.
3.
Database code is exactly as set in the ESDBDef.xml file (and not Database name).
127/135
F RO M W IN D O W S S C HE DU L E D T AS K
Say we have set the above Timer in the CSSyncConfig.xml file of the Application Server.
If in the Interval tag we have set -1 or 0, this means that the Application Server will not take over to rung this task
every N seconds (as would happen for instance if the Interval value was 60- every 60). By setting the value to 0, the
Application Server will not execute this task-its just set as available for execution. This value is set in cases where
there are more complex demands, e.g. once a day at 2am, when the assistance of Windows Scheduler is needed:
1. Select from Control Panel -> Scheduled Tasks or from the windows search bar type Task Scheduler and select
it at the machine the Application Server is running.
2. Select ew Schedule Task (Windows XP) or Create Task (Windows Vista and 2007)
3. In Run we set the full path for ESSchedulerEXE e.g. C:\Build\ESDEV210\Bin\ESScheduler.EXE
4. Then we insert space and next the Port set for the Application Server e.g. 8091
5. Afterward we insert also a space and next the code (ID) of the task as set into the CSSyncConfig.xml file e.g.
UPDSQL01
6. In Run As ALWAYS set: NT AUTHORITY\SYSTEM
7. In the 2
nd
tab we set the execution details from the options Windows scheduler provides.
8. Select
Notes:
1.
You do not need to be logged into the Application Server to run the task.
2.
Its needed both the server machine to be turned on and the Application Server to be running.
128/135
ESINSTALLSTANDARDDB
There is the ability to install a database without Management Studio.
By running the file ESInstallStandardDB.exe from the installation folder, the following window appears:
Here we set the database creation name in the SQL Server, its application description (code matches database name),
the file from which the database will be restored as well as the identification data to connect with the SQL Server.
If there is already a Database by that name, a replacement confirmation message appears.
ESDBCONNECTIONEDIT
There is the ability to link an existing SQL Server database to the application, for it to appear as an option during login.
Its setting can be done by running the file ESDBConnectionEdit.exe, which is in the installation folder.
Here we set the code and description of the Database, the SQL server, the database name as well as the identification
data to connect with the SQL Server.
By pressing at the last column Test, data verification is executed and a relevant message appears of successful or
unsuccessful connection with the Database.
Saving the data can be done either by the relevant icon or by closing the window and pressing Yes at the save data
message.
129/135
BUSINESS TRIGGERS
For using Business Triggers, first we must create the file CSBOTriggers.xml in the folder \CSConfig of the application.
EXAMPLES OF USE
R U N C U S TO M C O DE A T U P D A T E, I N S E R T
We can run Custom code at UPDATE and INSERT of an entity. To activate, all we have to do is set there parameters in
CSBOTriggers.xml, where we must add a section like the highlighted one. In brief, at this section, we define the Database,
Company and Entity where the Custom logic will apply as well as the Class name containing the Custom code.
<?xml version="1.0" standalone="yes"?>
<ESBusinessTriggers xmlns="http://tempuri.org/ESBusinessTriggers.xsd">
<ESBOTriggers>
.............
</ESBOTriggers>
<ESBODSObj>
<DB>TestDB</DB>
<Company>Test</Company>
<ObjectID>ESFIDocumentTrade</ObjectID>
<DSObj>Customer.BO.CSDocumentTradeDSSaveObj,CSBusinessObject</DSObj>
</ESBODSObj>
</ESBusinessTriggers>
or
<?xml version="1.0" standalone="yes"?>
<ESBusinessTriggers xmlns="http://tempuri.org/ESBusinessTriggers.xsd">
<ESBODSObj>
<DB>TestDB</DB>
<Company>Test</Company>
<ObjectID>ESFIDocumentTrade</ObjectID>
<DSObj>Customer.BO.CSDocumentTradeDSSaveObj,CSBusinessObject</DSObj>
</ESBODSObj>
</ESBusinessTriggers>
At the implementation part, the Class containing the relevant code can be written in C# or in VB.Net, while it is
necessary to add the following References:
ESBusinessObject.dll
ESDataTable.dll
ESResMngr.dll
ESSessionCtx.dll
VB.Net:
Public Class CSDocumentTradeDSSaveObj
Inherits Entersoft.Framework.BLL.ESDSSaveObj
Public Sub New()
'
' TODO: Add constructor logic here
'
End Sub
Public Overrides Sub PostObjectCommit(ByVal pDS As
Framework.Platform.ESDataSet)
MyBase.PostObjectCommit(pDS)
'
' TODO: Add Custom logic here
'
End Sub
End Class
130/135
A U TO MA T IC C O D ES C RE AT I O N I N O T HE R C O MP A NIE S
In many cases, there is need for common coding & mainly automatic creation of entities like items, trade accounts,
etc from company to company, e.g. 3 companies belonging to the same group require common customer coding in
all companies.
To satisfy this need we must create the file CSBOTriggers.xml with UTF-8 encoding into the installation
folded..\CSConfig at the application server, after we have first defined the following:
<ESBUSINESSTRIGGERS xmlns="http://tempuri.org/ESBusinessTriggers.xsd">
<ESBOTRIGGERS>
<FROMDB>SOURCEDB</FROMDB>
<FROMCOMPANY>001</FROMCOMPANY>
<TODB>TARGETDB</TODB>
<TOCOMPANY>002</TOCOMPANY>
<OBJECTLIST>ESFICustomer,ESFISupplier,ESMMStockItem,ESGLAccount,ESFIItem</OBJECTLIST>
<BRANCHID>1</BRANCHID>
</ESBOTRIGGERS>
</ESBUSINESSTRIGGERS>
Where
<FromDB> : FROM which Database the new entities will be copied
<FromCompany>: FROM which Company
<DB>: In WHICH database will the entities be copied
<Company>: In WHICH company will the entities be copied
<BranchID>: The branch
<ObjectList>: Here we set the copied entities:
ESFICustomer (for Customers)
ESFISupplier (for Suppliers)
ESMMStockItem (for Inventory Items)
ESFIItem (for Services and Expenses)
ESGLAccount (for Ledger Accounts)
ES QUERY ANALYSER
ES Query Analyser is a tool like SQL Management Studio in a more simplified form. It is executed from the option
Create database queries (Tools/System-Database Maintenance) from which the following window appears, with
connection to the sql server and the login database.
By selecting New SQL from the icon
a window opens to
131/135
3. In the Order field, we provide the FullyQualifiedAssemblyName of the designed forms class. This consists of
<NAMESPACE>.<CLASSNAME>, <ASSEMBLYNAME>, as set in .NETProject settings ( or DLL). Attention should
be given to the name of AssemblyName because it should not include either the extension or other path
information, only the assemblyname.
4. As command type we set <. form>
5. Accept and Save changes.
6. Logoff logon in the workstation.
Next, after tested, we must send it to all workstations through the procedure "Workstation synchronization". To activate
this mechanism automatically, we have to select Upgrade custom server version from Tools -> Version/Release updates.
The next time a workstation does a Login, it will be suggested to "Synchronize" due to difference in the custom version. If the
workstations were synchronized before this action, the only thing carried will be that assembly.
ATTENTION: The created assembly ( or DLL) must be put in the Servers installation folder
132/135
Next by logging off logging on the application, an extra option has been inserted in menu External commands, with
the defined name.
By selecting it, a new window appears (tab page) in the applications environment with this internet page, where we
have the ability for further browsing.
133/135
ADD-IN HANDLERS
There is the ability to set additional options in the Actions menu of a scroller or an entity form.
A D D HA N D LE R I N SC RO L LE R
At the scrollers xml, right in the row: </DATASET>(attention at the backslash where Dataset ends) and under the
row: <EDITABLE>False</EDITABLE> we add the new handlers command. E.g.:
<SCROLLERCOMMANDHANDLERID>Custom.CSHandler.Handler, AttachHandler</SCROLLERCOMMANDHANDLERID>
There are some readymade handlers (referred in the manual Data Presentation and Print Tools), but there is also the
ability to implement custom handlers, based on the following steps:
Implement the handler and add the Full qualified assembly name of the Handler created in the scroller where
the action will appear. This consists of <NAMESPACE>.<CLASSNAME>, <ASSEMBLYNAME>, as set in
.NETProject settings ( or DLL). Attention should be given to the name of AssemblyName because it should
not include either the extension or other path information, only the assemblyname.
At the scrollers xml, right in the row: </DATASET> (attention at the backslash where Dataset ends) and under
the row: <EDITABLE>False</EDITABLE> we add the new handlers command.
<SCROLLERCOMMANDHANDLERID>Custom.CSHandler.Handler, AttachHandler</SCROLLERCOMMANDHANDLERID>
In function ExecuteCommand of the handler it is visible if the added action is selected and if what was
programmed is executed.
ATTENTION: The created assembly ( or DLL) must be inserted in the directory of the application in the Server
A D D HA N D LE R I N FO RM S- S C RE EN S
To add custom actions, functionality, even custom forms in Entersoft Business Suite and Entersoft EXPERT screens,
the following must be done:
Complete the file CSFormAddins.xml that is in the CSConfig directory of the application. If file does not exist, it
must be created with the following form:
<?xml version="1.0" standalone="yes"?>
<
Addins>
<Addin>
<FormID></< font>FormID>
Where
<Handler></< font>Handler>
In FormID field we enter the screen code, the way its coded in
</</ADDIN< font>>
Entersoft EXPERT Business Suite.
</< p>
</ADDINS>
In Handler field we enter the Fully Qualified Assembly Name of the
For instance:
developed Custom .NET DLL (e.g. FullNameSpace.ClassName,
<?xml version="1.0" standalone="yes"?>
AssemblyName)
<
Addins>
<Addin>
<FormID>ESGOProject</< font>FormID>
<Handler>Custom.ERP.Project,MyCustomAddin</< font>Handler>
</</ADDIN< font>>
</< p>
</ADDINS>
If the implementation is done correctly, in the expanding Actions menu of the form, will be displayed those actions
added with the custom dll.
134/135
135/135