Web.config
Used by web, remote web services, service.
The web.config file is an XML file that can be changed as needed, but we recommend running the SuperOffice Web Configurator, which is installed by the web client. Administrators can use configuration files to set policies that affect how applications run on their computers. Read more on MSDN.
There are some SuperOffice specific sections, defined under the SuperOffice sectionGroup.
Security
Warning
Do not change these values unless you are absolutely sure!
Parameter | Description |
---|---|
Authentication | TrustedDomains(String) Check if a domain name is trusted. Note - separate section within the SuperOffice Security group section, it needs to be declared before it can be defined. |
Cryptography | Cryptographic options, see table below. Note: change any of these keys at your own peril |
Sentry | Ignore the Sentry mechanism, everything will be allowed (default 'False') Relates to the Sentry system in SuperOffice. |
The sentry system can be thought of as the traffic cop, controlling access to the data in the database. Each object in NetServer has an associated sentry that is responsible for enforcing rules such as "private appointments are visible only to its owner". Sentry rules focus on ownership, group membership, and user-level access.
The Cryptography section is used for encrypting and decrypting user credentials
Parameter | Description |
---|---|
SymmetricKey | Base64 encoded key-string as documented by System.Security.Cryptography.RijndaelManaged. |
SymmetricSecret | String value representing the user-defined secret, used when creating a hash (signature) to verify that the encrypted-decrypted value has not been tampered with. |
ActiveDirectoryCredentialPlugin
Caution
To find and import Active Directory users NetServer web services need to be in the Active Directory domain. This is why we recommend scenario 2 with reverse proxy so you do not expose it to the DMZ.
Parameter | Description |
---|---|
Domain | ActiveDirectory domain to use when looking up users |
Container | Container within the domain, use blank if you do not know |
User | Domain user to log on to the domain - needs to be able to list and view users |
Password | Password of the domain user |
Single Sign-on (SSO) if you mean that the user should not be presented with the SuperOffice login dialog will not work when using the recommended installation scenario, but the user may still authenticate with his AD username and password. Also, note that using Remote web services for Web (where web and NetServer are on different servers) is not supported due to Kerberos double-hop issues.
Configuration of mail parameters when using the SuperOffice Inbox. This is also the one used by Pocket CRM.
Parameter | Description |
---|---|
Reader | The Key used for mail reader - default MailKit from 8.1, used to be EasyMail |
Sender | The Key used for mail sender - default MailKit from 8.1, used to be EasyMail |
NumberOfDaysToDownload | Change how many days to past we should download and store emails. Defaults to 180 days |
SuperOffice Inbox downloads emails from your mailbox and stores them in the SuperOffice database.
If you want to change how many days to past we should download and store emails, you can add the following key <add key="NumberOfDaysToDownload" value="XX" />
in Mail section:
<Mail>
<Component>
<add key="Reader" value="MailKit" />
<add key="Sender" value="MailKit" />
<add key="NumberOfDaysToDownload" value="30" />
</Component>
</Mail>`
Now the Inbox will download emails younger than 30 days only. If no value is set, it defaults to 180 days.
Factory
The Factory is part of a NetServer extension mechanism to support plug-ins. To utilize the methods you must develop your own method and configure it in a specific way in the configuration file to identify that you are enhancing a provided method.
Diagnostics
Settings related to logging.
Parameter | Description |
---|---|
EnableScaffolding | Boolean value determines whether to log verbose, detailed, information. Default off, only turn on for extended debugging, and do turn this off later. |
EnableStackTracing | Should stack traces be collected by various events |
LogError | Boolean value determines whether to log all error messages. Default = True |
LogFailureAudit | Boolean value determines whether to log when an access failure occurs/failed authentications (default 'True') |
LogFolder | Folder (for example UNC path) where the log file is to reside. Note that the owner of the process needs to have access to manipulate files in this folder |
LoggedServices | List of services to be logged; default blank means all, otherwise a comma-separated list of service names (without the Agent suffix, for instance: BLOB, Appointment) |
LogInformation | Log general information. This includes successful SQL's passed to the database. Only permit this option while debugging a bug. This will be a severe performance hit! (default 'False') |
LogLongQueries | Should long-running queries be logged in textual form to a special file? default false |
LogLongQueriesAsXML | Should long-running queries be logged to a special file (Query_year.month.day.log) in XML serialized format, for later analysis and reruns using the QueryWorkbench tool |
LogMail | Log mail server communication |
LogMailFolder | Folder to output mail logs. Note that the owner of the process needs to have access to manipulate files in this folder |
LogServiceCalls | Should calls to the service layer be logged? |
LogSuccessAudit | Boolean value determines whether to log when access is granted / successful authentications (default 'False') |
LogTimes | Log time it takes |
LogToEventLog | Boolean value determines whether to write a message to OS Event Log. (Information Level Ignored) |
LogToFile | Boolean value determines whether to log all Log-Levels to a file. (default 'False') |
LogToSuperOffice | Boolean value. Log to SuperOffice Research and Product Development (Online through a WebService). If you experience poor performance during login, set this to False. |
LogToTrace | Boolean value determines whether to log all Log-Levels to trace output. Log to a Trace that can be listened to by TraceListener. (default 'False') |
LogWarning | Log warnings (default 'False') |
LongQueryThreshold | Threshold for logging a long-running query, in milliseconds. Queries that execute in less than this time are not logged as long-running. The time is from the moment the SQL text is sent to the database until the first row (for a select) or the 'nn rows affected' return value is received. |
Data / Database
Data
The Data section group contains three sections, Database, Explicit and ImplicitAnonymous. Combined, these sections define which server and database the caller will connect as well as what state settings to use. Which state settings take effect are determined by how the caller decides to connect, Explicit or ImplicitAnonymous.
The Session section relates to the lifetime of a NetServer communication session, such as the duration of a transaction, or group of transactions, and maintains the credentials defined in one of the following sections.
Parameter | Description |
---|---|
Mode | String value representing the mode of the session object. Permitted values: Thread, Process, and Context |
Modes:
Thread: Session is stored in a thread static manner. Each executing thread has a separate instance of the session. If the session is accessed on a different thread, it will contain a different value. For further reference, see System.ThreadStaticAttribute.
Process: Session is stored in a process static manner. This is the normal option for windows applications.
HttpContext: Recommended in ASP.NET applications. Added to prevent ASP.NET thread switches from changing identities in the middle of an ASP.net request.
Context: The session is stored in a context-static manner. For further reference, see System.ContextStaticAttribute.
PartnerHttpContext: Helper class for SuperOffice.DevNet.Online.Login
Database
The Database section relates to location and database-vendor-specific settings. Supported database servers include SQL Server and Oracle
Parameter | Description |
---|---|
CommandTimeout | Integer value representing the command timeout in seconds. |
ConnectionString | String value representing the connection string. |
DatabaseMajor | String value representing the database. MSSQL and Oracle |
DatabaseMinor | Integer value representing the version number of Database |
DatabaseName | String value representing the name of the database. Also used for the distinct service name. |
Server | String value representing the computer or server name where the database resides. |
TablePrefix | String value representing the prefix of the SuperOffice CRM tables in the database. |
Sybase Specific Settings:
Parameter | Description |
---|---|
DynamicLoadedDataBaseDriver | A string representing the location of the driver file. |
DynamicLoadedDataBaseDriverPolicy | A string representing the location of the policy file. |
DynamicLoadedConnectionType | A string representing the connection type. |
The Explicit section relates to employee and partner access to the SuperOffice database.
Parameter | Description |
---|---|
CommonDBConnection | Boolean value determining what authentication mechanism to use when authenticating a user. If this value is "True", DBUser and DBPassword are used in the database connection. Otherwise, the credentials provided in the authentication (for example SoSession class) will be used. "True" is the default for server (for example, web) applications, and "False" is the default for client (for example like Windows forms) applications. |
DBPassword | String value representing the DBUser database password. |
DBUser | String value representing a database username with access privileges. |
EmployeeAllowed | Boolean value determining whether an employee is permitted access. |
ExternalPersonAllowed | Boolean value determining whether an external person is permitted access. |
SystemAllowed | Boolean value determining whether a system user is permitted access. |
The ImplicitAnonymous section relates to anonymous access to the SuperOffice database. Implicit Anonymous is what you get when you do not explicitly authenticate as a user. Usually disabled in SO.web, which uses explicit users.
Parameter | Description |
---|---|
Allowed | Boolean value determining whether anonymous access is permitted. |
DBPassword | String value representing the database password used to connect to the database. |
DBUser | String value representing the database user (not the CRM5 user) used to connect to the database. |
SoPassword | String value representing the SuperOffice CRM5 user password |
SoUser | String value representing the SuperOffice CRM5 username of the Anonymous user |
Documents
The Documents section exposes seven settings related to SuperOffice documents. It is used as a way for NetServer to know where the document archive is, what temporary directory to use, as well as exposes a way to allow NetServer to impersonate a user with read and write access to those directories if that is required. See Table Four for complete setting property definitions.
Parameter | Description |
---|---|
ArchiveDomain | String value representing the ArchiveUsers domain name. |
ArchivePassword | String value representing the password of the ImpersonateUser. |
ArchivePath | String value representing the path to the SO_ARC directory. The default template path is calculated from this folder if not set. |
ArchiveUser | String value representing the ArchiveUsers domain name. |
ArchiveDomain | String value representing the domain of the user to impersonate with |
BufferSize | Integer value representing the internal buffer size in KB. The default buffer size is 32KB. |
ImpersonateUser | True if impersonate is turned on. If So_arc is located on a different server in the domain you need to turn this on. The impersonate user will also be used to write filestreams to the temp area during document |
TemplatePath | String value representing the UNC path of template folder. (Optional) - if not set defaults to the archivepath + \Template |
TemporaryPath | Temporary folder for working with documents. String value representing the temp directory for streaming files (must resolve to the same location for farms/clusters). |
More than one ArchivePath
You can have more than one ArchivePath in your Web installation. You need to edit web.config and add more Archive Paths under the Documents section:
<Documents>
<!-- Location of SO_ARC -->
<add key="ArchivePath" value="E:\SuperOffice\SO_ARC" />
<add key="ArchivePath2" value="E:\SuperOffice\SO_ARC2" />
You can add more alternative archive paths, like ArchivePath3, ArchivePath4,...
Globalization
The Globalization section exposes two settings related to user origin values. This section allows an application's country code and whether to use the country code for all employees and external people.
Complete setting property definitions.
Parameter | Description |
---|---|
ApplicationCountry | String value representing the country id for associates that are not persons (for example anonymous and system users). Default is GBR (England). |
ApplicationCountryCode | String value representing the country for associates that are persons (for example employees and external users). Default is GBR (England). |
UseApplicationCountryForPersons | Boolean value determines whether to use the application's country for all persons (for example employees and external users). |
Services
This section is used to specify whether an application is working locally or remotely.
Parameter | Description |
---|---|
DefaultMode | String value representing the default operational mode, Local, Remote, or Switch. |
RemoteBaseURL | String value representing the base URL and filename of the NetServer web services application file, SuperOffice.Services.Stub. |
SwitchDefault | String value representing the default mode for the switch. Can be Local or Remote. Default = Remote |
SwitchFailover | Integer value representing the timeout before failover in seconds. Default = 60 |
Scripting
[Read more on developer club][6]
Parameter | Description |
---|---|
EnableScripting | Turn on or off the use of scripts |
ScriptPath | Path to the scripts. Defaults to \script if not set. |
TimeoutLimit | Time in milliseconds allowed for the script to use. Default 20 sec. |
MaxTimeouts | Integer value representing the number of timeouts the script is allowed before it is disabled. Default 5. Default = 5 |
BatchService
Parameter | Description |
---|---|
ServiceName | Default = SuperOffice Batch Service |
MaxTasks | Default = 16 |
CPUTreshold | Default = 100 |
PollingInterval | Default = 2 |
DiagnosticsWebUri | Default = http://localhost:8002 |
RunTasksInProcess | Boolean value to start by IIS in the same process. Defaults to true |
Client
In this section, you add the Reverse proxy override if you want to export larger selections (Task-Export to Excel) from the web client.
Parameter | Description |
---|---|
UrlSchemeOverride | http or https |
UrlPortOverride | 80 or 443 |
UrlHostOverride | In our examples this would be the external site; socrm.myorganization.com |
ExportPageSize | Export large selections from the web client has a default value of 10000 rows. PS! preference has to be added in web.config |
ApplicationTitle | Change the title shown to the user, like My customized site name |
HelpFilesBaseUrl | String value representing the URL to help files. E.g. in large server farm environments, you may point to one help file location. |
HelpDispatcherUrl | Our SuperOffice help files, showing the correct help file language to the user. |
WebServices
Parameter | Description |
---|---|
AllowWebServiceRequests | Permit requests to web services. Default True from 8.1 |
WrapExceptions | Check if NetServer shall wrap and serialize exceptions, or leave it up to the communication carrier (i.e. WCF) |
RemoveInvalidXMLText | If we should remove UTF-8 characters that are not valid XML. The Text table is the only place where this filter is active. |
WebApi
Parameter | Description |
---|---|
AuthorizeWithUsername | Default value true |
AuthorizeWithTicket | Default value true |
AuthorizeWithImplicit | Default value true |
CORSEnable | Default value true |
CORSOrigin | Default value enables our SuperOfficeGmail link to talk to the web client. |
Feature Toggles
Some features are enabled by "Feature Toggles". To enable toggled features - you need to add 2 sections manually in your web.config file:
Open web.config file for your web installation
There are 2 sections to include into the web.config
a) Under sectionGroup name="SuperOffice"
Under
<configuration> -> <configSections> -> <sectionGroup name="SuperOffice">
Section to add:
<sectionGroup name="FeatureToggles"> <section name="State" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> </sectionGroup>
Original without the needed section:
After added the new section:
b) Under configuration -> SuperOffice
Section to add:
<FeatureToggles> <State> <add key="FeatureToggleName1" value="true" /> <add key="FeatureToggleName2" value="true" /> </State> </FeatureToggles>
Update the key name with the feature you want to add.
Original without the needed section:
After added the new section:
Save the file Save the web.config file, and the application pool will be recycled to get the new settings. Now you will be able to use the new features in the Web client.
Overview of some of the previous Feature Toggles
Feature | Toggle Name | Available from version | Released in version | Pilot in version |
---|---|---|---|---|
Configurable Screens | ConfigurableScreens | 10.0.2 | ||
Dashboards 2.0 | NewDashboards | 10.0.2 | ||
OAuth 2.0 Authentication | NewAuthentication | 10.x | ||
Bulk Update | BulkUpdate | 9.x | ||
Consent Management | ConsentManagement | 9.x | ||
New Ivitation | NewInvitation | 9.x | ||
Email Template | EmailTemplate | 9.x | ||
User Management | UserManagement | 9.x |
Lookup enabled features by feature toggle, on your own installation
You can use the value from feature_toggle field of the config table to determine if a feature is enabled. The feature_toggle field contains a delimited string of all the enabled feature toggles (',' as delimiter between the feature toggles, ':' as delimiter between the feature toggle name, and if it's enabled or not).
Example CRMScript:
#setLanguageLevel 3;
SearchEngine seConfig;
seConfig.addField("config.feature_toggle");
seConfig.execute();
String featureTogglesString = seConfig.getField("config.feature_toggle");
String[] featureToggles = featureTogglesString.split(",");
for (Integer i = 0; i < featureToggles.length(); i++)
{
String[] featureToggleValues = featureToggles[i].split(":");
String featureToggleName = featureToggleValues[0];
String featureToggleEnabled = featureToggleValues[1];
printLine(featureToggleName + " = " + featureToggleEnabled);
}
Result:
You can retrieve the feature_toggle field value using the dynamic archive provider when using the SuperOffice Web Services.
See Also
MSDN Configuration files