• Share
    • Twitter
    • LinkedIn
    • Facebook
    • Email
  • Feedback
  • Edit
Show / Hide Table of Contents

Web.config

• 20 minutes to read
 • 20 minutes to read

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.

Mail

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

Settings for the RESTapi

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:

  1. Open web.config file for your web installation

  2. 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:

    image

    After added the new section:

    image

    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.

    image7tvjr.png -screenshot

    Original without the needed section:

    image

    After added the new section:

    image

  3. 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:

image

You can retrieve the feature_toggle field value using the dynamic archive provider when using the SuperOffice Web Services.

See Also

MSDN Configuration files

© SuperOffice
SuperOffice |  Community |  Release Notes |  Privacy |  Terms of Use | Site feedback |  Search Docs |  About Docs |  Back to top