Technics:CoPlanner-Server
A folder, referenced to as "CoPlanner Server directory", has to be configured on the system which will act as the server. The folder contains some required sub folders, application and configuration files - which have to be configured accurately.
SysCommands.xml
This file is located in the CoPlanner Server directory. It contains information about system settings for the CoPlanner server instance. Please note in which language the SQL Server has been installed. If the German version is installed, then no further change is required. If the English version was used, then the file „SysCommands.xml“ has to be deleted or renamed (for example to „SysCommands_DeSql.xml“) and the file „SysCommands_EnSql.xml“ (within the same folder) has to be renamed to „SysCommands.xml“.
SvrConfig.xml
This file is located in the CoPlanner Server directory and defines several parameters of the CoPlanner Server instance.
<?xml version= "1.0" standalone="yes"?>
<SvrConfig.xml>
<CopSettings>
<Version>4</Version>
<ConnectionString>Server=CopServer;Initial Catalog=COP_BIKE;Integrated Security=SSPI;pooling=false</ConnectionString>
<DataBaseName>COP_BIKE</DataBaseName>
<FiscalYear>0</FiscalYear>
<ServiceName>copService</ServiceName>
<TelnetDebugPort>6900</TelnetDebugPort>
<DefaultLanguage>german</DefaultLanguage>
<BackupPath>C:\temp\</BackupPath>
<BackupRestoreLimitinMB>50</BackupRestoreLimitinMB>
<WebAuthenticateUrl>http://copsupport.coplanner.com/licence/get_cop_lic_v3.php</WebAuthenticateUrl>
<LicenceID>123</LicenceID>
<SSPIPort>11000-11100</SSPIPort>
<ClientConnectionTimeOut>1440</ClientConnectionTimeOut>
<EntitySecurity>true</EntitySecurity>
<AllowNonPowerUserDeleteDimElementsWithData>false</AllowNonPowerUserDeleteDimElementsWithData>
<EventLogEntryLevel>ERROR</EventLogEntryLevel>
<ServerLogPath></ServerLogPath>
<MultiThreadCommand>true</MultiThreadCommand>
<ProActiveCaching>true</ProActiveCaching>
<SkipImportHistory>true</SkipImportHistory>
<SecurityProxyLoad>false</SecurityProxyLoad>
<CopSysIDStartOffset>0</CopSysIDStartOffset>
<DynamicMode>false</DynamicMode>
<MaxRows>300000</MaxRows>
<MaxSvrLogFileSize>0</MaxSvrLogFileSize>
<DebugMode>false</DebugMode>
<StoredProcedureTimeout>3600</StoredProcedureTimeout>
<ShowLostDBConnectionWaruning>true</ShowLostDBConnectionWaruning>
<IISUserName></IISUserName>
<TransportUserName></TransportUserName>
<PowerUserModeViaADOnly>false</PowerUserModeViaADOnly>
<ADGroupPowerUser></ADGroupPowerUser>
<ADGroupPartnerUser></ADGroupPartnerUser>
<ADGroupManufacturerUser></ADGroupManufacturerUser>
<LoadAllEntityDimensionEntriesToClient>false</LoadAllEntityDimensionEntriesToClient>
<ReportServerUrl>https://servername:4445/coplanner/reporting</ReportServerUrl>
<DoVersionCheck>true</DoVersionCheck>
<UseNewDBSync>true</UseNewDBSync>
<DBSyncMaxThreads>10</DBSyncMaxThreads>
<DBCommandTimeout>600</DBCommandTimeout>
<UseNewCaching>false</UseNewCaching>
<CacheSizeFactor>0.5</CacheSizeFactor>
<StartTabAdress></StartTabAdress>
<LogonMaximumPerTimeframe>100</LogonMaximumPerTimeframe>
<LogonMaximumTimeframeInSeconds>60</LogonMaximumTimeframeInSeconds>
</CopSettings>
<SSASSettings>
<Server>CopServer</Server>
<DataBaseName>cop_olap</DataBaseName>
<XmlaLoadActive>true</XmlaLoadActive>
<UseRealElementIDs>true</UseRealElementIDs>
<UseMultipleHierarchies>true</UseMultipleHierarchies>
<MultiSelectFilterActive>false</MultiSelectFilterActive>
<LoadMeasureFormatAndType>true</LoadMeasureFormatAndType>
<ReplaceNullValues>false</ReplaceNullValues>
<DimensionLoadMode>AsDimAndHierarchy</DimensionLoadMode>
<LoadDimensionsByAlias>true</LoadDimensionsByAlias>
</SSASSettings>
<SSRSSettings>
<ReportServerUrl>http://CopServer/reportserver</ReportServerUrl>
<ReportWebServiceUrl>http://CopServer/reportserver/reportservice2005.asmx</ReportWebServiceUrl>
<RootFolder>/CoPlanner/Reports</RootFolder>
<UserFolder>/CoPlanner/User</UserFolder>
<TempFolder>/CoPlanner/Temp</TempFolder>
<SharedDataSourceReference>/CoPlanner/DataSources/CoPlanner</SharedDataSourceReference>
<Parameters></Parameters>
</SSRSSettings>
<DBCon>
<Stage>Server=CopServer;Initial Catalog=COP_STAGE;Integrated Security=SSPI</Stage>
</DBCon>
<SupportConfig>
<SupportButton>True</SupportButton>
<SendAsMail>True</SendAsMail>
<EmailToSendTo>support@coplanner.com</EmailToSendTo>
<IncludeSvrCommands>True</IncludeSvrCommands>
<IncludeNavigation>True</IncludeNavigation>
<IncludeSystemInfo>True</IncludeSystemInfo>
<IncludeCPU>True</IncludeCPU>
<IncludeMemory>True</IncludeMemory>
<IncludeGraphics>True</IncludeGraphics>
<IncludeScreenShot>True</IncludeScreenShot>
<SendAsPost>True</SendAsPost>
<DestUrlPost>http://copsupport.coplanner.com/coplanner/support/supportExtended.php</DestUrlPost>
<SendAsGet>True</SendAsGet>
<DestUrlGet>http://copsupport.coplanner.com/coplanner/support/{Culture}/support.php?UserInput={UserInput}&Version={Version}&ServerCommands={ServerCommands}&Navigation={Navigation}&SysInfo={SysInfo}&CPU={CPU}&Memory={Memory}&Graphics={Graphics}</DestUrlGet>
</SupportConfig>
<WebConfig>
<WebAppUrl>https://+:4443/coplanner</WebAppUrl>
<LogonLanguages>Deutsch|English</LogonLanguages>
<LogonWithCoPlannerSecurity>True</LogonWithCoPlannerSecurity>
<LogonWithSSPI>True</LogonWithSSPI>
<CorsAllowedOrigins>https://servername:4443</CorsAllowedOrigins>
<EnableSwagger>False</EnableSwagger>
<EnableCommandEndpoints>True</EnableCommandEndpoints>
<EnableExperimentalEndpoints>True</EnableExperimentalEndpoints>
<EnableMssEndpoints>False</EnableMssEndpoints>
<EnableAuthWithSessionId>True</EnableAuthWithSessionId>
</WebConfig>
</SvrConfig.xml>
CopSettings
The following parameters are defined in the CopSettings area:
| Inscription | Description | ||||||||||||
| ConnectionString | This parameter describes a typical "connection string" used to connect to a Microsoft SQL Server instance.
| ||||||||||||
| DataBaseName | Name of the SQL server database used as the main CoPlanner database (usually identical with the content of "Initial Catalog" paramater from above) | ||||||||||||
| PortNumber | Before CoP 10 HF 1.2: Default: 8963. Permitted and unused TCP/IP port number used for the communication between CoPlanner Server instance and the CoPlanner clients. For a list of commonly used (and to be avoided) port numbers see Wikipedia (external). Additionally, other services on the same server and firewalls may limit the usable port numbers.
The port number can be changed later, but the same port has to be configured both on the server and on the clients („ClientConfig.xml“). | ||||||||||||
| FiscalYear | Determines posting of financial year of the company to calendar year.
| ||||||||||||
| TcpFormatter | Before CoP 10 HF 1.2: Default: Native. Determines the mode of transmission between client and server. Possible values: „Bin“ for binary transmission, „Text“ for text transmission and "Native" for native transmission with the highest compression.
| ||||||||||||
| ServiceName | Name of the CoPlanner server service (as it should appear after installation as Windows service). | ||||||||||||
| TelnetDebugPort | Default: 6900. It is possible to establish a viewing window to CoPlanner Server with the aid of telnet. The parameter has to contain a permitted and unused TCP/IP port number used as telnet server port. For a list of commonly used (and to be avoided) port numbers see Wikipedia (external). Additionally, other services on the same server and firewalls may limit the usable port numbers.
To start the telnet session, open a DOS prompt in Windows (Start | ||||||||||||
| DefaultLanguage | The default language of the server is adjustable with this setting (ML routine CoPlanner). The default setting is German. If for example English is used, in the actual tables those entries are stored, which are seized by means of „English Client Logon“. Settings for example in German are stored in the ML system table. All available languages are available in the documentation of the ML routine. | ||||||||||||
| BackupPath | Determines the (local) path to a directory on the server which provides temporary disk space for a database backup (which can be requested by a client). The SQL Server database server account has to have write permissions to the specified directory. | ||||||||||||
| BackupRestoreLimitinMB | The maximum size of the database backup file in MB. | ||||||||||||
| WebAuthenticateUrl | CoPlanner licence validation url. | ||||||||||||
| LicenceID | License ID as provided by CoPlanner. The CoPlanner Server instance cannot be started without a Licence ID. | ||||||||||||
| SSPIPort | Before CoP 10 HF 1.2: Port for SSPI-Login communication. | ||||||||||||
| ClientConnectionTimeOut | after the expiration the client session on the server is deleted. | ||||||||||||
| EntitySecurity | with this inscription the company security can be deactivated. If there is no entry the default is set to true. | ||||||||||||
| AllowNonPowerUserDeleteDimElementsWithData | defines whether non PowerUser can delete elements with data. | ||||||||||||
| SSPIServicePrincipalName | Before CoP 10 HF 1.2: Service Principal Name: Can be empty per default. Only in use in case of SSPI and double hop P.ex.: "cop/mycomputer.mydomain.com" | ||||||||||||
| EventLogEntryLevel | it steers, which inscriptions are written in event log, it can be distinguished after severity code of errors
| ||||||||||||
| ServerLogPath | if this option isn't available or empty, the CoPlanner server folder will be used to store the file "Serverlog.txt". If a valid folder is entered, this folder will be used to write log file. If the folder isn't available, a message will be displayed and writing log file will be deactivated. The value "NoLog" deactivates writing log file too. | ||||||||||||
| IsAliveClientTypes | Before CoP 10 HF 1.2: entered client types send periodically "AliveCommands" to CoPlanner server. If the client sends no "AliceCommands" to the CoPlanner server for an extended period of time, the session will be deactivated. Following client types are valid: Excel, Windows, Web and from version 9.5 HF 1.5 also Word and PowerPoint. The types must be separeted by a pipe. It is recommended to set the clienttypes. | ||||||||||||
| MultiThreadCommand | with this option the parallel access of Clients can be activated. | ||||||||||||
| ProActiveCaching | with this option the "Tupel Caching" of CoPlanner cubes can be activated. This means, that interim results will be cashed. | ||||||||||||
| SkipImportHistory | is this inscription on true, error messages will not be written to the history table. | ||||||||||||
| SecurityProxyLoad | is this inscription on true, the security will be processed at the logon for the user. | ||||||||||||
| NTLogonTypes | Before CoP 10 HF 1.4: all listed NT logon types will be used in case of NT authentication. Following types are available: INTERACTIVE, NETWORK, BATCH | ||||||||||||
| CopSysIDStartOffset | this offset will be added to the first created CopSysID. If there are several models in use, you avoid double CopSysIDs. | ||||||||||||
| DynamicMode | activates dynamic loading. | ||||||||||||
| MaxRows | maximum number of datasets send to the client. | ||||||||||||
| MaxSvrLogFileSize | maximum size of serverlog-files. If the file will be greater it will be compressed. Zero means no compression. The size is defined in KB. | ||||||||||||
| DebugMode | Ist dieser Eintrag auf true wird am Server detailierter gelogged. | ||||||||||||
| SSPITimeOut | Before CoP 10 HF 1.2: defines the timeout for the SSPI LogOn communication between the Active Directory and the Coplanner Server. | ||||||||||||
| SSPITimeToKeepReservedPorts | Before CoP 10 HF 1.2: defines the time in seconds, how long ports are reserved. The reservation starts by click on Logon. | ||||||||||||
| StoredProcedureTimeout | optional defines the timeout in seconds after which the sql procedure will be cancelled. By default it is set to 3600 seconds. | ||||||||||||
| ShowLostDBConnectionWarning | on true, the information that the server lost the connection to the database is shown at the client. | ||||||||||||
| IISUserName | This entry is necessary for the login via SSPI via web client. The IISUserName is the identity of the application pool. For example IIS APPPOOL\.NET v2.0. | ||||||||||||
| TransportUserName | necessary for the automated transport feature. Please note that that user has manufacturer rights also when logged on with a client. This user has to be a fully qualified domain user. | ||||||||||||
| PowerUserModeViaADOnly | defines, if it is necessary to be member of the following AD groups to be able to log on as manufacturer, partner or PowerUser. | ||||||||||||
| ADGroupPowerUser | defines the AD group for the access as PowerUser. | ||||||||||||
| ADGroupPartnerUser | defines the AD group for the access as Partner. | ||||||||||||
| ADGroupManufacturerUser | defines the AD group for the access as manufacturer. | ||||||||||||
| LoadAllEntityDimensionEntriesToClient | defines whether the filtering of entity dimensions is made on the server or on the client. False is the filtering on the server. | ||||||||||||
| ReportServerURL | defines the URL for the communication with the Reportserver. Only necessary when the web reporting is in use. | ||||||||||||
| DoVersionCheck | defines, if a version check between clients and server takes place or not | ||||||||||||
| UseNewDBSync | defines, whether new DB Sync is used or not. True means that the new DB Sync is active. | ||||||||||||
| DBSyncMaxThreads | Defines the number of threads that can be used to write to the database when new DB Sync is active. If no value is entered, two threads are used. If the system utilization is to high, reduce the number of threads. | ||||||||||||
| SSLCertificate | Before CoP 10 HF 1.2: Is empty if the communication between server and clients is not encrypted. If you want to encrypt the communication you have to set this entry to the fingerprint of your certificate. The ClientConfig.xml of all clients in this case also have to be updated. Set the SSLCommonName to the CN of the certificate. | ||||||||||||
| DBCommandTimeout | Database command timeout for certain commands. This timeout is used e.g. for the data processing of imports. | ||||||||||||
| UseNewCaching | defines, whether the new caching is used or not. | ||||||||||||
| CacheSizeFaktor | Has only effects when UseNewCaching is true. The new caching prepares the data in a column-oriented cache for showing in masks. To avoid that the memory usage gets to high, you can define the CacheSizeFactor. The CacheSizeFactor limits the relation from the cache size to the table size. 0.5 means that the cache is allowed to have half of the data of the table in the cache. | ||||||||||||
| StartTabAdress | If empty, the Start.html will be loaded as before. Now have the possibilty to open the tiles or another webpage on the start tab. An example: @Session_WebAppUrl@/tiles/?menu=MyStartpage&SessionID=@Session_ID@ | ||||||||||||
| LogonMaximumPerTimeframe | Maximum count of login attempts per seconds, which are defined for LogonMaximumTimeframeInSeconds. 0 means no limitation. | ||||||||||||
| LogonMaximumTimeframeInSeconds | Timeframe in seconds for maximum login attempts, which are defined for LogonMaximumPerTimeframe. 0 means no limitation. |
SSASSettings
The following points have to be defined in area SSASSettings:
| Inscription | Description |
| Server | name of Server, on which OLAP-Database is located. If ClientBasedOlap is in use, you have to insert the name of server or IP address. Following names are not valid: localhost, ., 127.0.0.1 or local. |
| DataBaseName | name of OLAP-Database |
| XmlaLoadActive | is this inscription on true, structure data will be loaded by XMLA. |
| UseRealElementIDs | is this inscription on true, real OLAP keys will be used, under the premise that they are numeric. |
| UseMultipleHierarchies | is this inscription on true, alternative hierarchies of OLAP dimensions will be loaded and can be used (since SSAS 2005). |
| MultiSelectFilterActive | is this inscription on true, dimensions, used as filter, support multiselect. |
| LoadMeasureFormatAndType | with this option it can be declared, if connectors (c3, combined …) should be loaded directly at the Server start. This is not advisable at any OLAP console, due to the first user does not have to await the loading time. |
| ReplaceNullValues | is this inscription on true, all null values will be replaces with 0 by the connector. |
| DimensionLoadMode | defines the load mode of OLAP dimensions. Following entries are valid: AsDimension (default), AsDimHierarchy and AsDimAndHierarchy. Further information: Excursion SSAS Settings |
| LoadDimensionsByAlias | OLAP dimensions will be loaded by alias. Further information: Excursion SSAS Settings |
| Important If the SSAS settings LoadDimensionByAlias or DimensionLoadMode will be changed afterwards all cubes which refer to OLAP must be rebuild. |
SSRSSettings
The following points have to be defined in the area SSRSSettings:
| Inscription | Description |
| ReportServerUrl | (required) The report server’s virtual directory. |
| ReportWebServiceUrl | (required) SOAP endpoint for managing objects in the report server. |
| RootFolder | (required) Root folder for reports on the reportserver. |
| UserFolder | (optional) Folder for reports which will be created using the report assistant in the BI-Center. If this folder is missing or empty the root folder will be used. |
| TempFolder | (optional) Folder for reports which will be created using the report assistant in the Analyzer. If this folder is missing or empty the root folder will be used. |
| SharedDataSourceReference | path and name to an existing data source on report server, which is used by the report assistant to create a new report. Is this tag missing, the report assistant creates an embedded data source. The report builder can show no preview for reports with an embedded data source. |
| Parameters | Not in use. |
The following points have to be defined in the area DBCon:
| Inscription | Description | ||||||||||
| Stage |
|
Further variables:
Variables can be used e.g. at imports. Import objects require a Connectionstring to establish e.g. a connection to a previous system database. It is recommended to define such Connectionstrings as variables. On this way some objects can be changed at once and changes can be carried out more quickly.
<add key="Variable name" value="Value or inscription of the variable"></add>
SupportConfig
The following points have to be defined in the area SupportConfig:
| Inscription | Description |
| SupportButton | defines the visibility of the support button. |
| SendAsMail | send the information via email. Hidden parameters will be delivered as not provided. Please select a wise choice of information due to the text limits of emails. If information should be delivered only via email, please deactivate the options SendAsPost and SendAsGet. |
| EmailToSendTo | the email adress for the delivery of the mail. |
| IncluceSvrCommands | defines, if the server commands is shown and delivered or not. |
| IncludeNavigation | defines, if the last steps of the navigation should be shown and delivered or not. |
| IncludeSystemInfo | defines, if the system information is shown and delivered or not. |
| IncludeCPU | defines, if the information about the CPU is shown and delivered or not. |
| IncludeMemory | defines, if the information of the memory is shown and delivered or not. |
| IncludeGraphics | defines, if the information of the grafic card is shown and delivered or not. |
| IncludeScreenshot | defines, if the screenshot is shown and delivered or not |
| SendAsPost | true = delivery through post. |
| DestUrlPost | The data will be send to that URL. Hidden parameters will be delivered as not provided. Namen of the parameters: UserInput, Version, ServerCommands, Navigation, SysInfo, CPU, Memory und Graphics. If information should be delivered only via post, please deactivate the options SendAsMail and SendAsGet. |
| SendAsGet | true = delivery through get. |
| DestUrlGet | URL with the parameters to send the information to. Hidden parameters from above will be transfered as not provided. Please select a wise choice of information due to the limitation of URL from browsers from about 2000 characters. If information should be delivered only via get, please deactivate the options SendAsMail and SendAsPost. |
WebConfig
The following points have to be defined in the area WebConfig:
| Eintrag | Description |
| WebAppUrl | Defines the base url on which the internal webserver is available. Via this webserver the REST-API and some features are accessible. If you do not want to use the REST functionalities you can leave this entry empty.
In case of use the steps which are available at Voraussetzungen für die Verwendung der REST-Funktionalitäten have to be executed. |
| ReportServerUrl | URL which is used to communicate with the reportserver. Only necessary if web reporting is used. |
| LogonLanguages | Defines which languages are available at the web client login. |
| LogonWithCoPlannerSecurity | Defines, if CoPlanner Security is available in the web client. If false, the option is not available. |
| LogonWithSSPI | Defines, if Single Sign-on is available in the web client. If false, the option is not available. |
| CorsAllowedOrigins | If you want to access the API from another host, that host must be defined here. E.g. the call is like https://servername:5000/anycall, here must be https://servername:5000 defined. With | as separator you can use numerous entries. |
| EnableSwagger | Defines, if the swagger is available. If it is not necessary on the system the option should be false. |
| EnableCommandEndpoints | Must be true, when using Windowsclient, Reportserver or any CoPlanner Addin. If only the web client is used the option can be set to false. |
| EnableExperimentalEndpoints | Must be true, when using the Help, CSV-Upload, Cockpits anything else from the Prototype-App. If you don't use any of them the option should be set to false. |
| EnableMssEndpoints | Must be true, when using MSS masks. If you don't use this masks the option should be set to false. |
| EnableAuthWithSessionId | Necessary for the handover of the session-ID within the Windows Client to MSS-masks and content of the prototype. If you don't use any of them the option should be set to false. |
Excursion SSAS Settings
CoPlanner server offers several possibilities to load SSAS-Dimensions. Following table shows valid settings.
| DimensionLoadMode | LoadDimensionByAlias | Setting | Result |
| AsDimension | False |
|
![]() |
| AsDimension | True |
|
|
| AsDimHierarchy | True |
|
|
| AsDimAndHierarchy | True |
|
| Important Follwing settings are applied by default: DimensionLoadMode = AsDimHierarchy and LoadDimensionByAlias = True. |
| Important If the SSAS settings LoadDimensionByAlias or DimensionLoadMode will be changed afterwards all cubes which refer to OLAP must be rebuild. |
These are the allowed OLAP settings explained in detail
| Entry | Description |
| XmlaLoadActive |
- False: The DimensionsMembers are loaded with Level.GetMembers() - True: The DimensionsMembers are loaded from SchemaDataSet. (The ADOMD method GetSchemaDataSet(...) is used.) |
Excursion FormulasUsePriorityQueue
There is a possibility in formula work to define a execution order for formulas. To use this order the parameter "FormulasUsePriorityQueue" in the svrconfig.xml file has to be set to true. By using this option for formula execution formulas are not executed by sequence as before where the formulas have been triggered by changes in tables but now by priority.
By using a simple example the old and new behavior will be compared: If sales changes in profit and loss then the undistributed net profit will be changed and the balance has to be recalculated.
Without adaption of the priority the undistributed net profit-/undistributed net loss for february will be adapted and the balance will be recalculated when sales in january are updated. Due to the change of the undistributed net profit-/undistributed net loss in february also the undistributed net profit-/undistributed net loss in march has to be recalculated. By writing this change another calculation of the balance will be triggered.
From a sales update a undistributed net profit-/undistributed net loss is a result which has to be written monthly and with every writing the balance needs to be recalculated.
It would make sense to finish calculation of profit and loss( to write the undistributed net profit until the end of the year) and to transmit afterwards data to the balance.
This can be achieved by using the FormulasUsePriorityQueue: if the formula for profit and loss has e.g. a priority of 1 and the formula which updates the balance a priority of 2 an additional calculation of profit and loss and balance will be added to the calculation queue.
In the priority queue the formula with priority 1 will be preferred and therefore the calculation of profit and loss will be finished before the calculation of the balance. Additionally the system checks that there is already a request to recalculate the balance in the queue and no additional request will be added to the queue.
Definition of order
The priority of the execution of a formula will be determined by the table which triggers the calculation of the formula. Therefore formulas with different priorities can be executed (e. g. variable costs: if the recalculation of variable costs will be triggered through an update in the variable costs planning the mask will wait for the result, but will the calculation be triggered by an update in the sales planning the calculation should be done in the background. That can be done by assigning different priorities to the tables net sales and variable costs in the formula designer)
If no sequence is given or no order can be determined (e.g. Formula will be called by a macro) the sequence will be set to 1.
Avoidance Queue Starvation
If there is the danger that a calculation request has to wait a long time in the queue, the system can see this and new requests will be added to the queue behind the affected request - independently of the given priority.
Masks: Wait for calculations on the first level
In matrix masks can be defined to wait for calculations by setting the flag "WaitForCalc". In the actual implementation of the determination of the sequence it will be waited for all calculations which are triggered directly by writing in a table(this will be marked by calculation level 1). Here will be waited for all formulas of calculation level 1 independent of who has started the calculation.
With the PriorityQueue this behavior can be controlled more in detail, it will be waited for the execution of all formulas which have been triggered whose sequence < 0 (independent of user). To wait for a formula which calculates not on the source table this formula has to be triggered by the source table and needs a priority(< 0). This could be an use case: In a sales table the sales tax rate will be added to the actual record and the sales tax will be calculated and with another formula the sales for a profit and loss calculation written. The mask will now wait for an update formula because sales tax and sales tax rate are showed to the user but to write it to the profit and loss will be waited.
Exceptional position of SAME-Formula
If the calculation of SAME-Formulas will be triggered by a data input, these formulas will be calculated synchronly when saving the data record (and not added to the list). The calculation is not done by the list with calculations to execute.
Notes
It is recommended not to use the PriorityQueue without testing the behavior of existings model extensively. The change of duplicates had to be adapted by the process of this new implementation as well; this can lead to a change of calculation order in existing model in exceptional cases.
Configuration Tool
To edit CoPlanner Server settings you can use the configuration tool "SvrConfig.exe" which you will find at CoPlanner/Server folder.
CoPlanner-Server as service
The CoPlanner server can also be installed as a service. It is important that you have administrator rights to run the installation. You can start it using the button "Install Service", which can be found under CopSettings. The service starts with the name that is listed under Service Name. To uninstall the CoPlanner server as a service, select "Uninstall service".
Install some CoPlanner Services on one computer
On a computer several CoPlanner Services can be installed. Therefore you only have to change the service name among CopSettings and to reinstall the service again. Then under Windows services 2 independent services are available.
CoPlanner Server as a console
Start of the Server as a console
The installation has finished by copying of Server-directory onto the computer. You only have to start file CopServer.exe. A console window appears. Here you can see which operations the CoPlanner Server is carrying out.
Installation of CoPlanner Server with HTTPS
For a secure communication between clients and the CoPlanner Server you should use HTTPS.
This has two advantages:
- Encryption (it is not possible to read)
- Signature check (ensures the communication with the right server)
To use HTTPS you need a certificate. A certificate can be created by yourself or from various suppliers. Both options have advantages and disadvanteges. The certificate has to be a "X.509 certificate" (mostly a PFX-file) and must be valid for the domain, on which the CoPlanner Server should run.
Example: If the server should run under https://sample.copserver.mycompany:8080/coplanner the certificate must be valid for sample.copserver.mycompany.
Self signed certificates
Advantage: freely configurable, available at any time, undependent
Disadvantage: Not accepted by default of the most web browsers
If you want to use a self signed certificate, it has to be marked as secure on the PC of the user. This setting varies between browsers and operating systems.
Generally the most browsers notice the settings for certificates of the operating systems (actually at least Chrome, Edge and Internet Exprorer). Firefox must be configurated seperatly (see diese Information of Mozilla).
It is possible,to distribute certificates via group policy Windows domains.
Certificate from a supplier
Advantage: accepted by default of the most web browsers
Disadvantage: some are with costs, different services per supplier
There are a lot suppliers for SSL certificates and the prices change day-to-day.
Examples for suppliers:
Let’s Encrypt: https://letsencrypt.org/de/
Free. Have to be renewed every three months.
Thawte: https://www.thawte.de/
With costs.
The process is different for each supplier. At the end you should have a certificate as file, which can be installed on the server.
Install of HTTPS on Windows Server
On Windows Server Http.sys, a component of Microsoft Windows, is used as hosting component for the CoPlanner server. This component handles HTTPS.
You must have the certificate as file to install it or it have to be already installed on the server. If the certificate is already installed, you need to know which certificate should be used und you need the thumbprint of the certificate otherwise you have to install it and you also need the thumbprint.
You also need to know for which address the certificate is valid. That must be the address the users use to access the CoPlanner Server. The WebAppUrl should also have that address instead of using a '+'.
Then you have to register the URL:
netsh http add urlacl url=<WebAppUrl> user=<DOMAIN\user>
On production systems there should not be used wildcards on the highest level. On subdomain level a use is okay.
Examples:
Unsecure: https://+:8080/coplanner
Okay: https://*.copserver.mycompany:8080/coplanner
Okay: https://sample.copserver.mycompany:8080/coplanner
As an example:
netsh http add urlacl url=https://sample.copserver.mycompany:8080/coplanner user=MY_DOMAIN\copServiceUser
You can also delete the registration:
netsh http delete urlacl url=<URL>
After registering the URL, the certificate have to be added with the following command:
netsh http add sslcert ipport=<IP>:<PORT> certhash=<THUMBPRINT> appid=<GUID>
<IP> IP address of the server,
<PORT> used port.
<THUMBPRINT> Thumbprint, of the used certificate
<GUID> different, whether CoPlanner Server runs as console or service:
- Service: "{82880fad-ad78-4531-99ba-533f4c8e5840}"
- Console: "{6ef7e594-5b5e-4626-904a-47b513e81e30}"
Example:
netsh http add sslcert ipport=0.0.0.0:4443 certhash=2170950415ef045f6cb314c92e124411dd0590bf appid={6ef7e594-5b5e-4626-904a-47b513e81e30}
If you want to remove the certificate for the IP address and port:
netsh http delete sslcert ipport=<IP>:<PORT>
If you use the CoPlanner Reportserver you have to do the same steps for it.
the GUIDs for the appid of the Reportserver for the netsh-command:
- Service: "{d36681ea-e3d6-4909-94c3-93834beddb9d}"
- Console: "{489b672b-5171-4aae-9e79-320427ab6c62}"
Installation of certificate for a file
This is possible with the Windows certificate administration.
Determination of the thumbprint of the certificate
The thumbprint of the certificate is shown in the properties:
Find the current used certificate on Windows Server
If you want to find out which certificate is used, you can do with the following steps:
This command will show you the information of the certificate:
netsh http show sslcert ipport=<IP>:<Port>
The thumbprint is the „certificatehash“. After that with the following commands you can get the detailed information of the certificate (for <THUMBPRINT> you need the value you got with the last command):
cd cert:
dir -recurse | where {$_.Thumbprint -eq "<THUMBPRINT>"} | Format-List -property *
If the certificate has a „FriendlyName“, you will see it in the Windows certificate administration.
Otherwise you have to search it by alternative properties.
Renew/Change certificate
To change a e.g. expired certificate you have to do the following:
Remove the binding of the expired certificate:
netsh http delete sslcert ipport=<IP>:<PORT>
To confiure the certificate for the server the steps are the same as above. You have to use the following command with the thumbprint of the new certificate:
netsh http add sslcert ipport=<IP>:<PORT> certhash=<THUMBPRINT> appid=<GUID>




