Customising the Quick Access Bar

WorkBench provides a Quick Access Bar that allows you to launch queries by item type from the bottom of the WorkBench main screen. It’s intended to provide quick and easy access to all of the relevant types of information in your Cradle database.

Default Queries

By default, WorkBench is initialised to show a standard (Automatic) set of queries each ordered by the Identity attribute

  • All – Lists all items that you can access.
  • Bottom-Level – Lists all bottom-level items that you can access. Bottom-level items are items that do not have any cross references from them to other items of the same type. For example,  they have no children.
  • Document – Lists the latest instance of items that you can access and displays them as a document. For example in Document style.
  • Document (Simple) – A simplified version of the Document query.
  • History – Lists the latest instance of items that you can access and displays them in a view showing change histories.
  • Latest – Lists the latest instance of all items that you can access. There can be many instances of each item, such as many versions of the item.
  • Recoverable – Lists all items that are in a recoverable state.
  • Suspect – Lists all items that are deemed suspect.
  • Top-Level – Lists all top-level items that you can access. Top-level items are items that do not have any cross references to them to other items of the same type. For example, they have no parents.
  • Unlinked – Lists all items that you can access that don’t have cross references to or from them from any other items.
  • Yours – Lists all items that you own.
Query options from Quick Access Bar
Quick Access Bar query options

These queries may be useful as a starter set of queries. However, it is likely that you will want to tailor the queries shown in the Quick Access Bar to meet your own project needs and use the Project queries and views to display the data.

Note that all automatic queries are ordered by Identity. You might wish to order your Quick Access Bar queries by Key, especially when working with hierarchies of items.

Adding Project Queries to the Quick Access Bar

In Project Setup, you can select the item type that you wish to tailor and press the Quick Access Bar button. In this example, we will use Requirements:

Quick Access Bar option in Project Setup
Project Setup – Quick Access Bar option

This presents you with a dialog that allows you to add up to 10 Project or System defined queries to your Quick Access Bar.

You can still show the Automatic queries by selecting the Append automatic queries checkbox:

Quick Access Bar Setup dialog
Quick Access Bar Setup dialog

Once applied, all users in the project will see the changes to the Quick Access Bar:

Quick Access Bar showing additional queries
Additional Queries in Quick Access Bar

These additional queries will use the view as defined in the Query Details dialog.

Quick Access Bar - Query Details
Quick Access Bar – Query Details

Personalising the Quick Access Bar

You may wish to personalise the Quick Access Bar for your own use to only show the item types that are relevant to you in the order that you wish them to be displayed. You can achieve this in the Preferences:

Preferences - QAB Option
Quick Access Bar options in Preferences

If you select the Append remaining item types checkbox, all other item types are still shown on the Quick Access Bar after the ones you have selected:

Quick Access Bar with highlighted
Quick Access Bar with highlighted item types

For further information on the Quick Access Bar functionality, refer to the help page https://www.threesl.com/cradle/help/7.7/#workbench/other/wrk_qab.htm.

Choose Your HTML Display Tool

How would you like to display your HTML?

It might not be a common question, most of us have one favourite browser and that’s it. But if you do want to choose your HTML display tool, how do you do it?

However, in Cradle you can produce tool output in HTML as well as viewing the Cradle Help. There are situations where you may want to use a browser for the Help and say Microsoft® Excel for a table output. This can be controlled in Cradle 7.5 onwards in the User Preferences settings. There is a distinction between the Display HTML file and Display Cradle help options.

HTLM viewers Cradle User Preferences
HTML preferences

HTML File or HTML Help

Once your preferences are set up, you may choose to Publish Table from a Cradle View. This will show the Publish Table dialog and allow the output to be sent to an application for viewing. In the illustration below, the OK opens the resultant file in your chosen HTML display tool, Excel. However, the Help button still opens the dialog’s help file in your browser (defined by $BROWSER command directive).

Different HTML viewing in Cradle
HTML Outputs

Example

Now that the Cradle data has been published you can easily take advantage of facilities available in the selected too. For example charting the relative ‘Level of Effort’  for each of the items in the query.

LoE chart from Cradle Data
Cradle HTML data in Excel

Preferences

Because each user will have a different machine and may be working on different aspects of the project, it is possible to set individual User Preferences. It might be that on my machine I use Adobe® Acrobat to view PDF files, but my colleague has lightweight  PDF viewer. They are going to want to use their viewer for all their Cradle projects, and I will want to use mine. As this setting is related to a user and their machine, rather than the particular project, this is user preference rather than a project schema setting.

Remote Workers and Cradle – Connecting with SSH Tunnels

Your company is using Cradle, but you’re a remote worker – how do you connect to the Cradle server?

If you have the Cradle client utilities installed locally without a local CDS then one method, if you have an externally accessible Linux/Unix system is SSH tunnels.

To use SSH tunnels you need to “lock down” the Cradle server to use specific ports, so they’re not randomly allocated from a wide pool.  You can do this in the $CRADLEHOME/admin/ports file.

Make a note of the internal IP address of the Cradle server – we’ll use CDS_IPADDR later in this post to reference this address. (In this test environment it is 192.168.11.168)

Cradle Configuration Changes

As an example of a small Cradle system with 6 users we can configure the ports file as such. (We’re setting ports for each possible user and an extra)

CDS_UDP_PORT_NUMBER = 23960
TOOL_UDP_PORT_NUMBER = 23961
PRJMAN_UDP_PORT_NUMBER = 23962

CDS_TCP_TOOL_PORT_NUMBER   = 16161
CDS_TCP_PRJMAN_PORT_NUMBER = 16162
UTILITIES_TCP_PORT_NUMBER   = 16163-16169
WBENCH_TCP_PORT_NUMBER      = 16170-16176
CWS_TCP_PORT_NUMBER         = 21211-21217
PRJMAN_TCP_PORT_NUMBER      = 16177

This ports file needs to be copied to all the clients using this CDS.

Putty Configuration Changes

Now we can look at configuring the SSH tunnels. To do this we’ll be using PuTTY – probably the most popular Windows SSH client.

First off, click on the Category Session and enter the hostname or IP of the externally accessible box in the Host Name field.
Now expand the category SSH and click on Tunnels.
For each of the ports configured in Cradle we need to add an entry.
So, for the first one:
Source port  23960
Destination CDS_IPADDR:23960
You can leave the radio buttons alone (set to Local & Auto)
Now click the Add button.

In the Forwarded Ports box you should now have an entry similar to:
L23960     192.168.11.168:23960

Repeat this for all the other ports and we end up with a Forwarded ports section which looks like (if you scroll up and down):

Cradle Putty Tunnel Settings

L23960 192.168.11.168:23960
L23961 192.168.11.168:23961
L23962 192.168.11.168:23962
L16161 192.168.11.168:16161
L16162 192.168.11.168:16162
L16163 192.168.11.168:16163
L16164 192.168.11.168:16164
L16165 192.168.11.168:16165
L16166 192.168.11.168:16166
L16167 192.168.11.168:16167
L16168 192.168.11.168:16168
L16169 192.168.11.168:16169
L16170 192.168.11.168:16170
L16171 192.168.11.168:16171
L16172 192.168.11.168:16172
L16173 192.168.11.168:16173
L16174 192.168.11.168:16174
L16175 192.168.11.168:16175
L16176 192.168.11.168:16176
L16177 192.168.11.168:16177

Click back on the category Session, then add a name to the Saved Sessions and click on Save – so we don’t have to do this again.

If you now click on Open and login to the Linux host.
You can now use your local Cradle client with it pointed to the CDS as being on your local IP.

While you have this SSH session active, you will be able to access the CDS over the SSH tunnels.

How do I find information on the keyboard shortcuts?

Preferences

There are the usual operating system shortcuts  such as <ctrl> + C and <ctrl> + V to cut and paste text. Users can see and set the additional Cradle keyboard shortcuts in their user preferences.

These preferences are first drawn from the system wide cradle.ini/cradle.rc file. If you alter any of them for your own needs, they are saved in your personal user preferences as a difference between the system setting and you chosen value. Thereby balancing consistency between users, whilst allowing flexibility when needed.

This menu is selected from the tab Home -> Preferences

view of the keyboard shortcuts tab in the preferences dialog
Cradle Keyboard Shortcuts

Keyboard

The Cradle shortcuts are mainly based around diagram drawing operations. This can speed up productivity considerably. For example; you don’t have to keep moving your mouse cursor to a menu,  just to switch between say drawing and selecting.

More information about keyboard shortcuts can be found in the Cradle Help . Similarly the reset of the user preference details can also be set in the same dialog.

 

Using Mailsend for Sending Alerts

Email Alerts

In our article Email Alerts! In Cradle  we discussed using Mailsend utility so you can use SMTP rather than MAPI to send emails alerts. We touched briefly on the configuration within Cradle of using the utility. In this post, we’ll be expanding on that. Providing an example of a Mail Relay within the Cradle environment rather than talking directly to a company SMTP server.

Why use a relay?

sending and receiving email based on rawpixel.com on Pexels
Mailsend

So why shouldn’t we configure all the Cradle clients to talk directly through Mailsend to a company mail server?
For starters, the company mail server may be locked down to only accept SMTP emails from specific hosts, and so wouldn’t accept SMTP connections from every Cradle desktop client.

Using a relay means that the company mail server only needs to accept SMTP connections from a single host, the mail relay, as all the Cradle Mailsend desktop clients talk via the relay.

So, how do we setup a relay

Its as simple as installing the relay software and configure it. Currently we use Postfix in installations where we need a relay as we’re usually using Linux as a Cradle Database Server. Postfix is a package available on most/all Linux distributions.

Then its just a case of configuring it to accept incoming connections from the Cradle desktop clients. We lock this down to a subnet of IP addresses. Then set the relay host to being the company mail server which will deliver the email alerts. In this example we’re using Postfix to Cradle clients on 2 subnets, and the localhost. The cradle.ini/cradle.rc files then points to the relay host and not the company mail server.

eg.

# cradle.rc
MAIL_HOST = cradle.example.com
MAIL_PORT = 25


# Postfix main.cf
myhostname = cradle.example.com
inet_interfaces = all
inet_protocols = all
mynetworks = 192.168.0.0/24, 192.168.1.0/24, 127.0.0.1
relayhost = [mail.example.com]:25

Remote Workers and Cradle – Network Address Translation

Your company is using Cradle, but you’re a remote worker – how do you connect to the Cradle Database Server (CDS)?

With Network Address Translation – the IT administrator, where the CDS is located, can modify their firewall to redirect specific external ports to a local server.

Make a note of the internal IP address of the CDS – we’ll use CDS_IPADDR later in this post to reference this address. (In this test environment it is 192.168.11.168).

Cradle Configuration Changes

As an example of a small Cradle system with 6 users, we can configure the ports file as such.  We’re setting ports for each possible user (6) and an extra – so thats 7 ports in each range. To make it easier setting the firewall rules – so we have less rules to setup, we’ve got all the ports in UDP and TCP specific consecutive blocks, which is different to how we have them in the Cradle Help – https://www.threesl.com/cradle/help/

CDS_UDP_PORT_NUMBER = 23960
TOOL_UDP_PORT_NUMBER = 23961
PRJMAN_UDP_PORT_NUMBER = 23962

CDS_TCP_TOOL_PORT_NUMBER   = 16161
CDS_TCP_PRJMAN_PORT_NUMBER = 16162
UTILITIES_TCP_PORT_NUMBER   = 16163-16169
WBENCH_TCP_PORT_NUMBER      = 16170-16176
PRJMAN_TCP_PORT_NUMBER      = 16177

This ports file needs to be copied to all the clients using this CDS.

Firewall Config Changes

The IT administrator can now edit their firewall rules to redirect the external IP ports to the internal CDS.  As part of these rules they can set it so that only specific remote IP addresses are permitted to access these redirected ports.

I’m using pfSense as the example firewall in this case, and adding separate rules for each Cradle Port.
pfSense Cradle NAT Rules

Through the application of Network Address Translation, the remote worker now uses their locally installed Cradle client installation and talks to the Cradle Database Server, as if it is on the Cradle site’s external IP address – which they need to configure as their CRADLE_CDS_HOST address.

Article Updated

28/06/2021 – Use of port ranges in firewall rules.

Diagram Preferences

Drawing Just the Way You Like It

We all have our preferred way of doing things. Whether that’s a corporate or a personal view. 3SL don’t enforce a particular layout style, colour or size. These diagram preferences can be set by the user. As with any preferences, they can be set at an installation level in the cradle.ini file on Windows® or .cradlerc file on Linux® file as a default or overridden by the user.

Grid Preferences

In the diagram below  it can be seen that the drawing grid is quite small (32). Which is great for finer detail. However, if you are mainly concerned with large blocks in your diagrams and want plenty of space, a layout guide of 128 may be more appropriate. Users have two options, firstly to set the size each time they use Cradle from the Grid section on the Diagram  tool-bar or to set their drawing preferences.

setting the grid preferences for diagram drawing in Cradle
Diagram Preferences

Preference Dialog

The dialog can be opened from the Preferences option on the Home tool-bar. Once the dialog is displayed, the diagram preferences are set using the the Diagrams section. There are a number of defaults that can now be set ranging from the initial grid size to whether specifications are automatically created when the diagram is saved.  You can change the palette too, so a mute background rather than bright white can be chosen to be easier on the eye.

 

What’s a cradle.ini or .cradlerc file?

Preferences and Settings

The cradle.ini file on Windows® or .cradlerc file on Linux® is a configuration file holding the settings for Cradle.
The top half of the file contains all the default settings (commented out) so you can always see the values ‘as shipped’. It isn’t a file for the every day user, but is something the system administrator may delve into to control users’ experience.

The values are per installation so the file is located in the %CRADLEHOME%\bin\exe\windows or $CRADLEHOME/bin/exe/[linux-ia32|linux-x86_64] directory. The settings will apply to all the clients that connect. So if you set your date display preference to DD/MM/YY all users will see this.

image of cradle.ini file with date setting highlighted
The cradle.ini / .cradlerc file

Further details on cradle.ini or .cradlerc are shown in the Cradle help on the startup file.

Local Settings

Users can override most of these default settings through their preferences. These are stored on a per user basis. This means that a user located in, say the USA can choose to show their date as MM.DD.YY. This will be their preference regardless of their Cradle username or project. They don’t have to change their files manually. Users can alter their settings via the Preferences button on the Home ribbon. However should admin need to get at them, their files are located in %CRADLEHOME%/admin/definitions/personal/NETWORK_USERNAME. These files are either non existent (if a user has never overridden a preference), or are just a delta of the differences between theirs and the default file. Therefore, don’t worry when there is not much in them.

Trouble shooting

If a user can’t see a new setting that’s been applied by the system administrator, it may be that they already had an override in their personal settings and this will continue to apply until they either set their personal value to match the global, or their personal copy of the cradle.ini or .cradlerc file is deleted.

Preserve Your Settings

We would recommend backing up your system cradle.ini or .cradlerc file.

Can I enforce a company password policy?

Password Options

There are a number of options available to control a user’s password.  These meet the majority of policies our customers have asked for.
In the Users Settings section of the project schema setup the management can set the policy that users must adhere to.

control over password policy
Password Settings

This can include

  • Use password ageing
  • 3 login failures
  • Warn of password expiry
  • Enforce minimum password size
  • Enforce password format
  • Enforce unique passwords in cycles
  • Users can change password only once/day
  • Force users to change password
  • Password must contain at least one uppercase character
  • Password must contain at least one lowercase character
  • Password must contain at least one numeral
  • Password must contain at least one special character ` ! $ ^ * ( ) _ + – = { } [ ] : @ ~ ; < > ? . /|
  • Passwords may not match usernames (case insensitive comparison)

Does a user get told why their password is wrong?

When entering the password field, the box will remain with a red border until the password matches the criteria. The ℹ symbol will bring up a dialog telling you what’s causing the rejection. This will enable the user to select a password that matches your company password policy.

Password policy highlighting / reporting
Password Entry

What if a User forgets?

A user with MODIFY_USER privilege  can reset the user’s password by logging in and entering the User Setup dialog. If the user’s account has been disabled because of too many wrong attempts it can be re-enabled here too.

What if we can’t remember an administrator’s account password?

If you are trying to reset a User’s password and can’t remember the password of the user with MODIFY_USER privilege, you could sign on as the database manager account  MANAGER. This account has all privileges including ACCESS_BYPASS and can be used to reset any of the users.

What if we can’t remember the MANAGER account password?

This super user account should be carefully guarded. Some clue or encrypted version of the password should be locked away in a safe or special password manager on a closed system depending on your company password policy. However, all is not lost, you will need to speak with your IT department, to get someone with access to the raw data files. Then you will need to contact 3SL support support@threesl.com who will be able to assist in resetting the passwords to a new known value.

Can 3SL tell us what the passwords are?

No, sorry. The password file does not work like that. They would only be able to reset them to something new (which you’d be advised to get each user to change as soon as they  next login)

What are the alternatives?

You could use LDAP authentication and then the passwords the user has to enter will match the policy set for your LDAP server.

Use Hierarchies to Aggregate and Apportion Values

You will often want to organise information in a hierarchy. The hierarchy represents an entire collection of information. You can view the hierarchy at any level that is convenient. In effect, each level summarises the levels below it. Therefore, you may want any numerical information at the bottom of the hierarchy to be totalled at each higher level. So, it is common to use hierarchies to aggregate and apportion values.

Cradle can help you by calculating appropriate values at each level in the hierarchy. In the following System Breakdown Structure (SBS) hierarchy, the total weight of that component and everything within it is shown inside the square brackets:

Use Hierarchies to Aggregate and Apportion Values
SBS Hierarchy With Aggregated Total Weights

Aggregation and Apportionment

Aggregation means to add together. In the example, the components of the transformer are:

  • Transformer, weight 15
  • Transformer mount, weight 5

Therefore, the aggregate weight is 20, which is shown as the weight of the entire transformer.

Apportion means to divide, or split. If a set of pumps is to weigh at most 200kg, and there are 4 pumps, then we can apportion this weight budget equally between the four pumps. So, each pump is to weigh 200kg divided by 4, which is 50kg for each pump.

So we normally aggregate actual values up a hierarchy.

Therefore we normally apportion a budget value down a hierarchy.

Use Hierarchies to Aggregate and Apportion Values

You can aggregate values up a hierarchy by:

  • Create an integer attribute that stores the value for each item
  • Create a calculation that adds the item’s value and the total of the values of all its children
  • Store this calculated value as the total for this item and its children

Another way to say this is:

  • value for an item = user-supplied value
  • total for an item = value for the item + total of the ‘total for an item’ for all children

You can apportion values down a hierarchy in a similar way:

  • Create an integer value that stores the budget value for the item
  • Create a calculation that divides the item’s parent budget value
  • Store the calculated value as the budget for this item

Integer Attributes

You can create integer, or positive integer, attributes in items. An integer attribute can only store an integer value. You can only store integers greater than or equal to zero in a positive integer attribute.

You can create integer attributes as categories and then assign them to your items. For example, you can create an integer attribute Weight by:

Use Hierarchies to Aggregate and Apportion Values
Creating an Integer Attribute
  1. Ensure you are logged-in as a user who has PROJECT privilege so you can change the schema
  2. Select Project Setup from the Project tab
  3. Set Options to Item Definitions and select the Categories tab:
  4. Select New… and enter the name of the new attribute, for example Weight, and set its type to be Integer or Positive Integer:

Assign the new Weight category to an item type by:

Use Hierarchies to Aggregate and Apportion Values
Assign an Integer Attribute to an Item Type
  1. Select the Item Definitions tab
  2. Choose the item type
  3. Select Categories
  4. Select an unused category assignment and select the new Weight category:

Repeat this process to create another positive integer attribute Total Weight and also assign it to the item type. This is the attribute that will receive the result of the aggregation calculation.

The Aggregation Calculation

The last step to use hierarchies to aggregate and apportion values is the aggregation or apportionment calculation.

Still inside the schema and with the same item type selected:

Use Hierarchies to Aggregate and Apportion Values
A New Calculation
  • Select Calculations…
  • Select New and enter the calulation‘s name, such as Weight Calcs
  • To define the expression, we start by choosing the item’s own weight category:
Use Hierarchies to Aggregate and Apportion Values
Add a Category to a Calculation
  • Then click the + button or manually enter + into the calculation to perform an addition
Use Hierarchies to Aggregate and Apportion Values
Add Linked Items Into a Calculation
  • Then choose to total the Total Weight of all child items. We find the child items by finding all items of the same type that are linked to the current item by following all cross references found by the navigation Downwards. When we find these linked items, we get the Total Weight value from them:
  • Select Validate to check the expression that we have created
Use Hierarchies to Aggregate and Apportion Values
Store the Calculation in an Attribute
  • Finally we specify that we want the result of the calculation to be stored in the integer category Total Weight that we calculated. This means that each item’s total weight will be available to its parent item when it get values from its children, see 2 above

Using the Results

We can use hierarchies to aggregate and apportion values and the results can be used either directly from the calculation, or by saving the result of the calculation in an attribute.

You can either display a calculation or the category that stores its result. The values can be shown in views. This is what what we did to produce the SBS display at the start of this blog entry. Here is the view:

Use Hierarchies to Aggregate and Apportion Values
Displaying a Calculation in a View

You can use a calculation, or the category that stores its result:

  • In other calculations, or
  • As part of rule sets, or
  • To calculate part of a metric, or
  • To calculate KPIs (key performance indicators) in dashboards