Org Config

Overview

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 Categories

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 Configs

Overview

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.

812818040.png

Default Values for FSE

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

https://ramanlab.zinier.com

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

https://raman.zinier.com

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

smtp.sendgrid.net

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

email

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

https://zendesk.com

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.

Entity Config Fields

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).

Value Type = String

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

812818037.png

Value Type = Boolean

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

812818034.png

Value Type = Integer

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

812818031.png

Value Type = JSONText

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

812818028.png

Date and Time Format Configuration

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.

Where Date and Time formats are used

There are several places where date and time formats are relevant

Component

Screenshot

How to configure

Data Grid

  • Where: Main page and Sidepanel

  • Use Case: Displays a Date, or Date Time or Time field type in a column

812818060.png

Use Org Config below

OR

Override org config in page def

Date Picker

  • Where: Sidepanel

  • Use Case: Web User selects date in a sidepanel

Example of selecting a date with a calendar

812818068.png

Use Org Config below

Calendar

  • Where: Main page and sidepanel

  • Use Case: Web user views a schedule in calendar format

Example of tasks shown in a calendar

812818113.png

Use Org Config below

Time Picker

  • Where: Sidepanel

  • Use Case: Web user selects a time range

Example of Task Planned Date and Time

812818101.png

Use Org Config below

Exported .csv

  • Where: Downloaded export .csv

  • Use Case: Web user exports a data grid

Example: Contracts

812818092.png

Example: (Contracts)Exported.csv

812818089.png

Use Org Config below

Close out Packages in PDF

  • Where: Downloaded PDF

  • Use Case: Web user downloads a PDF file generated in the web such as a close out package

Example of close-out package

812818074.jpg

Must use custom workflow and set the format in the workflow

Notification Center

  • Where: Notification Center main page and sidepanel

  • Use Case: Web user views web notifications

812818107.png

Not configurable as of now

Recommendation Center

  • Where: Recommendation Center main page and sidepanel

  • Use case: Web user looks at platform generated recommendations

812818110.png

Not configurable as of now

Email Notifications

  • Where: Emails sent to users

  • Use case: A user is sent an email notification generated by Zinier

812818104.png

Must be configured via notification workflow

Map

  • Where: Main page and sidepanel

  • Use case: Web user sees a map with date or time details

812818083.png

Use Org Config below

Entity Configs related to Date and Date time formats

Config Name

Accepted Values

Description

is24hrTime

true/false

  • true: time format will be shown on 24Hr format. This is the default format.

  • false: time format will be shown in 12 hr format.

defaultDateTimeFormat

  • d-m-Y H:m:s

  • m-d-Y H:m:s

  • Y-m-d H:m:s

  • Y.m.d H:m:s

  • m.d.Y H:m:s

Y and H are always capitalized.

If this key is available in your org config, this format will work for both:

  • datagrid

  • component level for dateTime

defaultDateFormat

  • d-m-Y

  • m-d-Y

  • Y-m-d

  • Y.m.d

  • m.d.Y

  • Y/m/d

Y always be in capital letter.

If this key is available in your org config, this format will work for both:

  • datagrid

  • component level for dateTime

defaultTimeFormat

  • H:m:s

  • m:s:H

  • s:m:H

H must always be capital letter

defaultDate

  • mm-dd-yyyy

  • yyyy-dd-mm

  • dd-mm-yyyy

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 defaultDate and defaultDateFormat exist in Entity config table, the platform will give preference to defaultDateFormat.

defaultTime

  • hh:mm:ss

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 defaultDate and defaultTimeFormat exists in Entity config table, the platform will give preference to defaultTimeFormat.

Open Issues

There are several open issues on date time formats in ISAC. These issues will be taken care of in the roadmap.

  1. A single-digit date will be shown. Instead of 03/02/2020, we will show as 3/2/2020

  2. In Calendar Component, the header date format cannot be changed according to Org Config.

  3. Notifications and Recommendations date time formats are not configurable for now. They come as-is from the platform.

  4. The timer component is showing the 12-hour format as configured but after selecting the time, the time is showing in 24-hour format.

  5. Solution Builder pages like Timer Event are not following org config as of now.

Notification Type

Overview

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.

812818151.png

Notification Settings

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.

EMAIL Notifications

When enabled, users in the org can send email notifications to groups of users.

PUSH Notifications

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

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.

812818148.png

Fields

Field Name

Field Type

Description

Example

ID

String

System generated ID for notification type

email

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.

EMAIL

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

Overview

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.

812818171.png

Add New External Systems Settings

  1. From the main page, click Add New to open the side panel.

  2. Enter the ID, Name and Security Credentials. The table below contains a detailed explanation for each field.

  3. Click Save once you are done.

812818168.png

Fields

Field Name

Field Type

Description

Example

ID

String

ID of External System (if left blank, system will generate)

googleCredentials

Name

String

Name of External System

googleCredentials

Security Credentials

JSON

Insert credential key for external system

***

Logs

Overview

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

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.

812818212.png

Session Log Details

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.

812818209.png

User Location Logs

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.

812818206.png

User Locations Log Details

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.

812818203.png

Error Logs

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.

812818191.png

Error Log Details

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.

812818188.png

Security

Overview

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.

Security Questions

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.

812818254.png
Adding New Security Questions
  1. From the main page, click Add New to open the side panel.

  2. Enter the text of the Question and then indicate whether or not the question should be active or not.

  3. After filling out all the fields, click Save.

812818251.png

OAuth Server Config

This module contains the security configurations to enable OAuth authentication. This may be used for Single Sign On to the Zinier Platform.

812818248.png
Adding New OAuth Server Config
  1. From the main page, click Add New to open the side panel.

  2. Enter the OAuth Server Config, Approvals, and Access and URL details.

  3. After filling out all the fields, click Save.

812818242.png
Fields - OAuth Server Config

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

SAML Server Config

This module contains the security configurations to enable SAML authentication. This may be used for Single Sign On to the Zinier Platform.

812818239.png
Adding New SAML Server Config
  1. From the main page, click Add New to open the side panel.

  2. Enter the SAML Server Config and URL details.

  3. After filling out all the fields, click Save.

812818236.png
Fields - SAML Server Config

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

Translations

Resources

Overview

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.

812818279.png
Adding New Resources
  1. From the main page, click Add New to open the side panel.

  2. Enter the Id, Resource text, Target platform and other fields.

  3. After filling out all the fields, click Save.

812818276.png
Fields -Resources

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

Localisation:Best practices
Overview

Defining the best practices to follow for the localisation across all teams for our application.

Best practices to follow:

  1. Id string should not exceed 30 chars

  2. No spaces or special chars (only alphanumeric)

  3. Ids needs to follow camelcase. Start with lowercase letter

  4. Version controlled csv that can go into seed data

  5. Have one common id for all targets (use pipe separator)

FSE / Mobile dynamic page:

  1. 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’)

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

  3. Always provide fallback text on the FSE pages ( Currently only applicable to web pages)

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

  1. 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’)

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

  3. Provide localisation support for the pre-login screens including forgot password, 2FA verification, activate account etc

  4. Any new component / updates are introduced, localisation needs to be applied.

Mobile Static Pages:

  1. 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’)

  2. Any new component / updates are introduced, localisation needs to be applied.

Open Items for improving the localisation:

  1. Backend:Need to investigate the option to support when the resources are uploaded with only language code as the locale.

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

    Session Timeout Configurations

    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

    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.

    Managed Sessions

    An Org Admin can Manage the user sessions by turning on the below flag. When flag is turned on each session (i.e., username, email, etc) is captured along with the corresponding login and logout time.

    session

    monitor

    Boolean

    TRUE