Org Config (Organisation Configurations) are organisation wide settings and configuration which governs the overall Zinier application behaviour for all users within the organisation. These configurations are user-defined and independent from the Zinier system configurations. There could also be default org configs that are installed automatically for every organisation.
Currently, Solutions Admin are the only users allowed to view and add Org Config.
Org Config is categorised into the following modules;
Config Category |
Description |
---|---|
Entity Config |
These are general configurations related to the organisation. These could be default date or time format. |
Notification Type |
These are the types of notifications that the organisation can publish to their users (email, sms, push). |
External Systems |
These configurations contain security credentials to external systems that have been integrated into the organisation's Zinier app. |
Logs (Location, Session and Error) |
These are the logs of the organisation's users location while logged in to the app, session details and error logs. This is a view-only module and cannot be further configured. |
Security |
These configurations contain security settings for the whole organisation including security questions given to a user when they forget their password. |
Resources |
These are translation resources needed for organisations with multi-language compatibility. Translation strings are input and stored here to enable the organisation's users to use the Zinier mobile and/or web app in another language. |
Entity Configurations are set by solution admin and determine the overall application behavior for an organisation. There are several default Entity Configs available to an organisation. These include default language of application, default currency, location and others. These default values can be edited according to the organisations’ needs.
configKey |
configScope |
valueType |
configValue |
Use Case |
---|---|---|---|---|
pwdRegEx |
security |
String |
^(?=.*?[A-Z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$ |
This is the expression value to validate the expressions allowed in the password based on the special characters and spaces. |
pwdHint |
security |
String |
8 characters, 1 upper case letter, 1 special character, 1 number |
This is the text value visible during password creation while the user activates the account. |
resetPasswordExpiryHours |
security |
integer |
48 |
Config to allow the expiry duration of reset password link URL. This value implies that the link will be valid for the next 48 hours from the moment it's sent. |
countFailedAttempts |
security |
Integer |
2 |
This is the number of attempts user is allowed to enter an incorrect password before account gets locked. |
lockDurationMins |
security |
Integer |
2 |
This is the number of minutes for which an account will stay locked before user can login again. |
defaultCurrency |
org |
String |
$ |
This is the default value of currency that's used in the web to show any price value. |
defaultLanguage |
org |
String |
en-US |
This is the default language available for showing all the data on web. |
defaultDate |
org |
String |
dd-mm-yyyy |
This is the format value to show date. e.g. in the current value, it will show as 01-12-1995 |
defaultTime |
org |
String |
hh:mm:ss |
This is the format value to show time on the web. We are currently showing hh:mm:ss in the local time. |
defaultDateTime |
org |
String |
dd-mm-yyyy hh:mm:ss |
This config will show both date and time in the format selected. |
maxSize |
files |
integer |
1 |
|
locationInterval |
session |
integer |
10 |
|
allowedCount |
import |
integer |
1190 |
Yet to confirm the usage of this config. As of now, setting the Importable records max count is system config which solution admin can't configure on UI. |
authType |
login |
String |
unlock |
|
backendUrl |
backendUrl |
string |
||
bucketInfo |
s3 |
JSONText |
{"bucketRegion":"us-east-1","bucketName":"z2raman"} |
|
defaultSize |
batch |
integer |
1000 |
This is the value of default batch size used while loading web pages with a number of records. |
fcnServerKey |
login |
String |
AIzaSyDUDcF7WyPjW92BGZjITdB1pVeY-84s0m0 |
|
frontendUrl |
frontendUrl |
string |
||
location |
log |
boolean |
TRUE |
|
mode |
maintenance |
boolean |
FALSE |
|
numberOfSecurityQuestions |
session |
integer |
2 |
This config specifies the number of security questions which the user will see after setting up password on the web. |
refreshTokenAllowed |
session |
boolean |
TRUE |
This is a key to prevent user from getting signed out from an existing session. Refresh key will refresh the session. |
secreteKeyRefreshTime |
session |
integer |
60 |
|
session |
monitor |
boolean |
TRUE |
Need to ensure 2FA org config also has the session monitor config enabled to track the session tokens needed for 2FA. |
smtpHost |
notification |
String |
||
timeOut |
session |
integer |
1440 |
This is the config value set in minutes to decide when your session will expire. For a value of 20, user will automatically get signed out after 20 minutes if refreshTokenAllowed set as false. |
unlockExpiryTime |
authentication |
integer |
This is the timing value specified in seconds to decide when the unlock code for mobile activation will expire. e.g. If the value set is 60, the code sent will be expired after 60 seconds. |
|
isEnabled |
twoFactorAuth |
boolean |
true |
This config enables the two factor authentication, so it has to be added after adding all other configs. Else all the users on this org will be logged out. Then system won't allow any user to login for the org without otp authentication. |
options |
twoFactorAuth |
String |
email,sms,web,push |
This config specifies the supported medium for sending otp. |
otpLength |
twoFactorAuth |
Integer |
4 |
This config decides the number of characters to be used for sending otp. |
defaultMode |
twoFactorAuth |
String |
|
This config specifies the default mode for sending the otp for two factor authentication. |
defaultCountry |
org |
String |
Country code like (Au for Australia) |
This config specifies the default mode for the country flag in phone no field and the phone code for the country. |
CustomerSupportLink |
session |
string |
it can take the user to the support page specific to that user. |
|
status |
deployment |
string |
production |
Having this org config will enable the LRU caching on the org. Fetch |
defaultBreadcrumbs |
org |
boolean |
true |
If set to true, this config allows the user to see nested side-panel breadcrumbs across the org. If false, the nested panels won't be visible. On not adding the config, by default user will see the breadcrumbs. |
When adding new entity configs via the side panel, users will have to input different fields depending on the the value type (string, boolean, integer, JSON text).
When the value type = String, the value of the config key is a string. In this example, the default currency value = $, which means that anywhere in the platform, when the defaultCurrency key is called, "$" will be used.
Field Name |
Description |
Example |
---|---|---|
Config Key |
Unique key/parameter under the config scope for any system value. |
defaultCurrency |
Config Scope |
Configs are grouped depending on their application such as Session, security, location etc. |
org |
Value Type |
Can be of type: String, Boolean, Integer, JSONText |
String |
Config Value |
Sets the value of the config key for use anywhere in the system where the Config Key is called. |
$ |
Encrypted |
If TRUE, encrypted values will not be displayed to users |
No |
Boolean config values are either true or false. In this example, setting the value to True enables locations tracking/logs for mobile users in the org.
Field Name |
Description |
Example |
---|---|---|
Config Key |
Unique key/parameter under the config scope for any system value. |
location |
Config Scope |
Configs are grouped depending on their application such as Session, security, location etc. |
log |
Value Type |
Can be of type: String, Boolean, Integer, JSONText |
Boolean |
Config Value |
Sets the value of the config key for use anywhere in the system where the Config Key is called. Boolean config values are either true or false. |
True |
Encrypted |
If TRUE, encrypted values will not be displayed to users |
No |
When the value type = Integer, the value of the config key is an integer. In this example, the number of records that can be imported using the Import/Export Manager is limited to 5 records per import.
Field Name |
Description |
Example |
---|---|---|
Config Key |
Unique key/parameter under the config scope for any system value. |
allowedCount |
Config Scope |
Configs are grouped depending on their application such as Session, security, location etc. |
import |
Value Type |
Can be of type: String, Boolean, Integer, JSONText |
Integer |
Config Value |
Sets the value of the config key for use anywhere in the system where the Config Key is called. |
5 |
Encrypted |
If TRUE, encrypted values will not be displayed to users |
No |
When the value type = JSONText, the value of the config key is stored as JSON. In this example, the credentials for the organizations s3 bucket are stored as an encrypted JSON string.
Field Name |
Description |
Example |
---|---|---|
Config Key |
Unique key/parameter under the config scope for any system value. |
allowedCount |
Config Scope |
Configs are grouped depending on their application such as Session, security, location etc. |
import |
Value Type |
Can be of type: String, Boolean, Integer, JSONText |
Integer |
Config Value |
Sets the value of the config key for use anywhere in the system where the Config Key is called. In the case of JSONText, the value is in the form of JSON. |
Unknown macro: {"bucketRegion"} |
Encrypted |
If TRUE, encrypted values will not be displayed to users |
No |
ISAC supports multiple date and time formats in the web platform. These are largely controlled by enabling several Entity Configs in Org Config.
Generally, only numeric formats are consistently accepted across all components in the platform. Formats like ‘03 Mar 2020’ or ‘3rd March 2020’ should not be used as it will cause inconsistency between components.
There are several places where date and time formats are relevant
Component |
Screenshot |
How to configure |
|
---|---|---|---|
Data Grid
|
|
Use Org Config below OR Override org config in page def |
|
Date Picker
|
Example of selecting a date with a calendar |
Use Org Config below |
|
Calendar
|
Example of tasks shown in a calendar |
Use Org Config below |
|
Time Picker
|
Example of Task Planned Date and Time |
Use Org Config below |
|
Exported .csv
|
Example: Contracts Example: (Contracts)Exported.csv |
Use Org Config below |
|
Close out Packages in PDF
|
Example of close-out package |
Must use custom workflow and set the format in the workflow |
|
Notification Center
|
|
Not configurable as of now |
|
Recommendation Center
|
|
Not configurable as of now |
|
Email Notifications
|
|
Must be configured via notification workflow |
|
Map
|
|
Use Org Config below |
Config Name |
Accepted Values |
Description |
---|---|---|
is24hrTime |
true/false |
|
defaultDateTimeFormat |
|
Y and H are always capitalized. If this key is available in your org config, this format will work for both:
|
defaultDateFormat |
|
Y always be in capital letter. If this key is available in your org config, this format will work for both:
|
defaultTimeFormat |
|
H must always be capital letter |
defaultDate |
|
This is an older entity config which will be deprecated in the future. This config only applies to the data grid and not other components. if both |
defaultTime |
|
This is an older entity config which will be deprecated in the future. This config only applies to data grid and not other components if both |
There are several open issues on date time formats in ISAC. These issues will be taken care of in the roadmap.
A single-digit date will be shown. Instead of 03/02/2020, we will show as 3/2/2020
In Calendar Component, the header date format cannot be changed according to Org Config.
Notifications and Recommendations date time formats are not configurable for now. They come as-is from the platform.
The timer component is showing the 12-hour format as configured but after selecting the time, the time is showing in 24-hour format.
Solution Builder pages like Timer Event are not following org config as of now.
The Notification Type module contains the types of notifications that an organization can publish to its users (email, sms*, push and web). If the organization needs support for all three types of notifications, it should enable all three notification types.
*SMS is not currently supported (September 2019) but will be supported on a client-by-client basis.
Zinier currently supports 3 types of notifications in the system: EMAIL, PUSH, and WEB. Settings for notifications can be accessed by hovering over the row containing the record you wish to configure and clicking the Edit row action icon. The table below contains a detailed explanation for each field.
Once the notification settings are configured, solutions admins can then create any number of notifications from the Admin / Notifications module in FSE to meet the specific business requirements of an organization. These notifications will behave in accordance with the settings configured here.
When enabled, users in the org can send email notifications to groups of users.
PUSH notifications are notifications sent to a user's mobile device. Recipients can access these notifications from the Notification Center by clicking on the Notifications icon from the navigation menu of the Zinier Mobile app.
WEB notifications are notifications sent to groups of users of the Zinier Web app. Recipients can access these notifications from the Notification Center by clicking on the Notifications icon in the top right part of the screen.
Field Name |
Field Type |
Description |
Example |
---|---|---|---|
ID |
String |
System generated ID for notification type |
|
Description |
Text Input |
A description of the notification type. This field is optional. |
Email notification settings |
Email Allowed |
Boolean |
If set to 'Yes', email notifications will be enabled for the org. |
Yes |
Push Allowed |
Boolean |
If set to 'Yes', push notifications will be enabled for the org. |
Yes |
Group Messaging Allowed |
Boolean |
If set to 'Yes', group messaging will be enabled for the org. |
Yes |
User Messaging Allowed |
Boolean |
If set to 'Yes', user messaging will be enabled for the org. |
Yes |
Link Allowed |
Boolean |
If set to 'Yes', URL links are enabled for an org. URL links are links that can be placed inside of a PUSH or WEB notification. |
No |
Validity |
Integer |
0 |
|
Preferred Messaging Type |
Dropdown |
Sets the org's preferred notification type when sending notification. |
|
Broadcast in All |
Boolean |
No |
|
System defined |
Boolean |
When particular notification type is system generated, this field is marked as yes. This field is system generated and read-only. |
No |
Frequency |
Integer |
Sets the frequency of the notification being sent in hours. For example, if frequency is 2, notification will be sent every 2 hours. |
0 |
Last Trigger Time Stamp |
Date |
System-generated time stamp. This cannot be edited by the user. |
2019-10-08 |
Priority |
Dropdown |
Sets the priority of the notification type for the user. |
HIGH |
External System in Org Config are configurations that contain security credentials to external systems that have been integrated into the organisation's Zinier app. External Systems refer to non Zinier systems used for an integration. Common examples include CRMs like Salesforce or Hubspot or Google APIs.
From the main page, click Add New to open the side panel.
Enter the ID, Name and Security Credentials. The table below contains a detailed explanation for each field.
Click Save once you are done.
Logs contain the logs of the organization's users location while logged in to the app, session details and error logs. A Solution Admin can manage the user sessions by enabling the corresponding entity configs inOrg Config > Entity Configmodule. When these configurations are enabled, Solution Admin will be able to see each user’s Session Logs (i.e., username, email, etc along with the corresponding login and logout time), Location Logs (username, email, etc along with the last known location and time of the location log) and Error Logs. Tokens are used to manage sessions on our platform -- when a user successfully logs in a token is returned. For every subsequent action, the token needs to be sent along with the user id and organization id. The tokens are unique for each session i.e., if a user logs in from two different devices, each login will have a different token. This is a view-only module and cannot be further configured.
Session logs track the login and logout times of an organization’s user base. This is a view-only module and cannot be further configured.
You can view the log details by hovering over the row of the desired record from the main page table and clicking the View icon. When you click View, the side panel will appear.
This is a log of all the user's locations within the organization. It contains details of the longitude and latitude of the user and the time at which their location was last captured.
You can view the log details by hovering over the row of the desired record from the main page table and clicking the View icon. When you click View, the side panel will appear.
This is a log of any known errors for users in an organization. It contains details of the errors and can be used to help troubleshoot an implementation.
The Security module contains security settings for the organization, includes security questions given to a user when they forget their password, and OAuth / SAML security configurations.
This module contains a list of the security question options given to a user when they forget their password. A Solution Admin can manage the number of required security questions by configuring the "numberOfSecurityQuestions" entity configs inOrg Config > Entity Configmodule.
From the main page, click Add New to open the side panel.
Enter the text of the Question and then indicate whether or not the question should be active or not.
After filling out all the fields, click Save.
This module contains the security configurations to enable OAuth authentication. This may be used for Single Sign On to the Zinier Platform.
From the main page, click Add New to open the side panel.
Enter the OAuth Server Config, Approvals, and Access and URL details.
After filling out all the fields, click Save.
Field Name |
Field Type |
Description |
Example |
---|---|---|---|
Provider |
String |
||
Oauth Identity Provider |
String |
||
Client ID |
String |
||
Client Secret |
String |
||
Grant Type |
String |
||
Authorized Grant Types |
String |
||
Scope |
String |
||
Approval Prompt Key |
String |
||
Approval Prompt Value |
String |
||
Access Type Key |
String |
||
Access Type Value |
String |
||
Redirect URL |
URL |
||
Authentication Server URL |
URL |
||
Token Endpoint URL |
URL |
||
Resource Server URL |
URL |
||
Fetch Oauth User Details URL |
URL |
This module contains the security configurations to enable SAML authentication. This may be used for Single Sign On to the Zinier Platform.
From the main page, click Add New to open the side panel.
Enter the SAML Server Config and URL details.
After filling out all the fields, click Save.
Field Name |
Field Type |
Description |
Example |
---|---|---|---|
Identity Provider |
String |
||
Relying Party Identifier |
String |
||
Response Issuer |
String |
||
SAML Binding |
String |
||
Identity Provider URL |
URL |
||
Assertion Consumer Service URL |
URL |
||
Identity Provider Logout URL |
URL |
The Resources module contains a list of translation strings which can be used to support multi-language/localization for an organization. Translation strings enable the Zinier mobile and/or web app users to view the apps in another language. In the case of mobile, the Zinier Mobile will automatically detect the language settings of the device and translate the app content into that language if the strings are available. When building mobile workflows, if it is important to keep in mind whether or not multiple languages are required. If so, the fields in the Mobile Page Config should be populated with the Resource ID created here, which acts as a variable to store the translated text.
In the case of the web app, the default language for an organization is set by configuring the "defaultLanguage" entity configs inOrg Config > Entity Configmodule. When building web Pages that require multi-language support, you will likewise need to populate translatable fields in the Web Page Config with a Resource ID to store the translated text.
From the main page, click Add New to open the side panel.
Enter the Id, Resource text, Target platform and other fields.
After filling out all the fields, click Save.
Field Name |
Description |
Example |
---|---|---|
ID |
Unique ID of the string. You will need to populate fields that require translation with this ID in Mobile and Web Page Config as placeholders for the translated text. |
24months12monthscontract |
Locale |
Language settings code for a country. For example en-US or es-mx. |
en |
Title |
Display Title used in the in-app pop ups for mobile users. |
|
Resource |
The actual text or string value that should be displayed when the Resource ID is translated into the language specified by Locale. |
"24 months & 12 months contract" |
Target |
The app where the translation will appear: either on the mobile app or web app |
mobile |
Scope |
Used to groups resources by category. For example, Error, Info, Message |
Info |
Defining the best practices to follow for the localisation across all teams for our application.
Best practices to follow:
Id string should not exceed 30 chars
No spaces or special chars (only alphanumeric)
Ids needs to follow camelcase. Start with lowercase letter
Version controlled csv that can go into seed data
Have one common id for all targets (use pipe separator)
FSE / Mobile dynamic page:
Version controlled csv that can go intoOrgseed data. ( Ids declared for the dynamic pages needs to be uploaded on $org_resources with locale as ‘en-us’)
Ensure to use the unique Ids for the same resource across all FSE / mobile pages for the same functionality. For example: If “Technician” string needs to be translated one page, any page technician string is used across FSE / mobile workflows, ensure to use the same Id.
Always provide fallback text on the FSE pages ( Currently only applicable to web pages)
Any new mobile dynamic page / FSE page / fields / hover text are introduced / updated, ensure to apply the localisation and update the csv file. Have it uploaded to$org_resourcestable.
Platform Web:
Version controlled csv that can go into seed data. ( Ids declared for the static pages needs to be uploaded onsystem_resourcewith locale as ‘en-us’)
Localisation needs to be applied on all of the components front end supports. For example: Field labels, place holders, hover text, tool tips, Primary and Secondary buttons, Dropdowns, Import / Export component, component headers for map, gantt chart, scheduler component etc.
Provide localisation support for the pre-login screens including forgot password, 2FA verification, activate account etc
Any new component / updates are introduced, localisation needs to be applied.
Mobile Static Pages:
Version controlled csv that can go into seed data. ( Ids declared for the static pages needs to be uploaded onsystem_resourcewith locale as ‘en-us’)
Any new component / updates are introduced, localisation needs to be applied.
Open Items for improving the localisation:
Backend:Need to investigate the option to support when the resources are uploaded with only language code as the locale.
Mobile: Currently there is no option to provide the fallback text for the dynamic pages. If application receives the unsupported locale at the login, user display for the dynamic mobile pages would be with localisation code as {%FieldName}.
An Org Admin can configure the amount of time after which a session will be timed out. When the session is timed out, the user will have to login again to perform any further actions.
timeOut |
session |
integer |
60000 |
Tokens are used to manage sessions on our platform. When a user successfully logs in a token is returned. For every subsequent action, the token needs to be sent along with the user id and organization id. The tokens are unique for each session i.e., if a user logs in from two different devices, each login will have a different token. The tokens are generated using MD5 (with a random salt) and have a 256 bytes key length.