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
Related Articles

Calculations in Cradle

How can I create the same report each month?

Report Definitions

Like many settings a report’s setup can be saved. This creates a report definition file that can be stored in the Project, User, User Type, Team or Personal areas. It can then be recalled by each user that is permitted to see those ‘directories‘.

The report definition can hold the content definition and design layout of the report.

Example – A query based report.

In this example ‘Alan’ has set up an Item Summary report based on the Test – All query. This has been saved as Monthly test report and the output shown in a browser. The example shows a selected Style, and the Options that have been selected elements that are required in the report columns.

Saving a report definition from the Report Inspector
Save Report Definition

A different user ‘Peter’ does not have the permission to create or alter definitions, but can still run the report each month as it has been added to the Project’s phases.

running a report from the phase tree
Report from a Phase

Phases/Definition Sidebar

You have users that are not permitted to access definitions directly. They might be the user that needs to trigger the report each month, then there are two ways they can access it. Opening the Definitions sidebar and drilling down to Reports -> Project the report could be triggered from here. Alternatively it could  be added as a phase. Users accessing the phase sidebar can then select and run the report definition directly without access to the report definition itself.

Permissions

You’ll need the CREATE_DEFS privilege to be able to edit the report definition.

 

November 2017 Newsletter

Remember, Remember any date in November….

For many of us the clocks have gone back and we’re entering that period where it is dark when we travel to work and dark when we travel home.
This means the brightest thing we may see all day is the monitor glaring in front of us. Of course we should be mindful of problems sitting in front of a VDU and ensure we take regular breaks, but it does mean you can concentrate on your projects without wanting to  be outside*1 ! However, back to the date theme, not every Cradle user is aware that they can use relative queries on dates. Using these relative values, queries can be set to list all the activity in the last month or last week. So you can indeed “Remember, remember any issues/requirements/tests raised (as opposed to rased) in November.”

screenshot showing how to set relative date in a query
Relative Dates

The query results at the top of the above screenshot, shows all components in a project. The relative modified date query in the lower half shows only those components modified between the beginning of the month and today.

There are a number of relative dates you can use, Start of this week, Start of three months ago, End of last month and so on. You can read more about query dates in the Cradle Help under the “Select the Dates Tab”

*1 Apologies to our customers in the Southern hemisphere – you may want to wait six months before this statement makes complete sense!

Cradle 7.3.2

If you want the extra facilities or small bug fixes in Cradle 7.3.2,  you can download it from the website and install new clients and server across your organisation. There is no need to obtain an additional security code for this point release upgrade. Those on single user versions of Cradle 7.3 can also take advantage of the upgrade. If you have any problems please email or call the Support  Department support@threesl.com +44 1229 838867 or contact your local distributor.

Banking Changes

Updated ring fence information and dealing with 3SL’s banking details posted here.

Opportunities

Opportunities with 3SL producers of Cradle
s

3SL are on the lookout for talented individuals to join our team. We’re open to creating roles for people with mixed skills. See here for more details.

Social Media

Twitter

If you follow us on Twitter @threesl, you’ll know that we Tweet out all new blog entries (which reached 300 this month) so you

3SL on twitter @threesl
@threesl

have a quick way of seeing if an article of interest has been published or updated Grab a range of items – Short-Cuts in Cradle. We try and retweet interesting stories from our customers, so if your company uses Cradle and isn’t following, make sure those in the media department know and let us know if we are not following your company’s main Twitter account.

Blog

We asked whether 3SL ‘Could Do Better… and if you’ve not had your say, please respond to help us better serve your needs.

Hints of the Month

When you want to configure multiple bits of information in one view cell (say a reference number made up from a category value and the item name and a bit of fixed text) Multiple Data Cells is the option to choose.

If you would like information in your Document Publisher template to be variable, our resident DocPub expert tells you how with Parametrics in Document Publisher

We answer the question about moving Cradle to a different server and changing licences.

And we discussed how to number items in a hierarchy.

You can read Hints & Tips in the 3SL Blog.

The 4 Types of Requirement Confirmation

Every user requirement must be a clearly stated expressions of a stakeholder need for an externally-observable characteristic of the system being developed. Therefore, it must be possible to check that the system we have built satisfies all of its user requirements. Since there are different ways to check things, it is helpful to identify the 4 types of requirement confirmation and to tag all requirements with one or more of these types as early as possible in their development.

the 4 types of requirement confirmation
Verification and Validation in the Systems Lifecycle

Verification and Validation

But first, we need to define some terminology. The terms verification, validation and the acronym V&V are often used for checking compliance with requirements. Sometimes they are used differently, which can be confusing. So, we will define them first:

  • Verification is the activity of checking that the implementation, build or construction of a component, and the system itself, has been done properly. It is the idea of checking that a power outlet has been wired correctly and that it is properly earthed. Verification means to answer the question “have we built it correctly?”.
  • This is a good question to ask, but it does not answer the question “have we built the correct thing?”. That is validation. So, validation means to check that the system conforms to what its stakeholders asked for.
  • V&V is the combination of these two. Depending on your preference, it could mean either Verification and Validation, or Validation and Verification. Most of us in 3SL prefer the second, as it is a little easier to say. The two are equivalent. As a result, V&V simply means to check everything, from the quality of the raw materials, and the fabrication or assembly of components, to the final inspection, configuration, alignment or calibration of the finished product.

The 4 Types of Requirement Confirmation

The 4 types of requirement confirmation are:

  • Inspection, or I
  • Analysis, or A
  • Demonstration, or D
  • Test, or T

We usually abbreviate these types to IADT. They are often called validation methods.

Most requirements will have one of these validation methods, but sometimes a requirement will have more than one.

The Requirements Confirmation Methods

We can describe the 4 types of requirement confirmation as follows.

Inspection

Inspection is the examination of the product or system using basic senses. This means to do one or more of look at it, touch it, smell it (rarely applicable), taste it (even more rarely applicable!). So, we would physically examine a product and check that all its physical characteristics are as required and that it has all of the controls that it is supposed to have. Similarly, for a software system, we would check that its UI is as required, that it has all of the data entry fields and buttons that it is supposed to have. For a web application, we would check its appearance on different screen sizes.

Analysis

Analysis is the validation of a product or system using calculations and models. We will use analysis to make predictions of the product or system’s performance based on some representative, actual, test results. We can use analysis to calculate failure points based on actual test results, without resorting to destructive testing (expensive as we can only do it once!).

Demonstration

Demonstration means that we use the product or system as it is intended to be used. So we can follow the functional user requirements and check that the product or system does what the user requirements say that it should do. We will press every button and use every control in a product to confirm that the product does what it is supposed to do. For software, we enter data as users will do and ensure that the software performs the actions that it is supposed to do and check that its reports are correct.

Test

Test is a more precise and controlled form of demonstration. We test a product to confirm that it behaves precisely as specified under a set of carefully specified test conditions. We repeat these operations using different sets of test conditions, following precisely-specified steps to complete the test. Therefore, this is often to verify performance requirements.

Use in the Process

It is good practice to specify the confirmation criteria for each requirement as it is written. This is because it helps reviewers to confirm that the requirement has been written clearly, by answering questions such as “could I inspect the product and confirm this requirement?”, or “could I demonstrate that this requirement has been met with the finished product?”, and so on.

Once the requirement and its confirmation method(s) are agreed, we can create its confirmation item(s). If a requirement is simple, then it will have one confirmation. If complex, we will create more than one confirmation.

Similarly, if the requirement has multiple confirmation methods, then we will need a confirmation item for each of them.

Therefore, the goal would be a single validation for each requirement, because an atomic requirement (one that says only one thing) should only need one validation.

Of course, both user requirements and system requirements will have a confirmation method. So we would normally talk about validations and verifications, and not the more general term, confirmations. Therefore, we would refer to:

  • The validation method of each user requirement
  • Writing validation items for user requirements
  • The verification method of each system requirement
  • Writing verification items for system requirements

Although it is impossible to generalise:

  • The confirmation methods of user requirements are predominately Inspection and Demonstration
  • The confirmation methods of system requirements are predominately Test and Analysis

Displaying Item Hierarchies

You will often want to organise information in a hierarchy. In a hierarchy, each item of information will have a unique Identity, a hierarchical number and (usually) a name. Displaying item hierarchies nicely will help everyone to clearly understand the information and its structure.

For example, here is a (very!) simple collection of System Breakdown Structure (SBS) hierarchies:

displaying hierarchies
A Collection of SBS Hierarchies

This display clearly shows the hierarchical structure of the items, their hierarchical numbers, and their names.

Displaying Item Hierarchies

Hierarchies display items with a label. This label contains the item’s Identity, Name, Version and Draft ID attributes.

3SL recommends that hierarchical items are auto-numbered. Therefore, their Identity will not be the nice hierarchical number that users will want to see. That hierarchical number is normally stored in the Key attribute.

Therefore, we want the labels for items in a hierarchy to contain the Key and Name attributes.

Create a View for Trees

So, your first step is to define a view to show items in trees, such as:

define view tree labels
Define Items’ Tree View

This contains only the Key and Name attributes, and a small text separator containing  a colon. This separator is cosmetic. If you prefer not to have it, then don’t!

Save the view with a simple name such as the item type followed by Tree. In this case, the view name is:

SBS – Tree

Save it as a Project scope view. If you save the view with Project scope, everyone in the project can use it.

Tell Cradle to Use this View in Trees

The final step is to tell Cradle to use the new view when displaying hierarchies of this type of information:

displaying item hierarchies set default view
Specify a View to Show Items in Trees
  • Select Project Setup in the Project tab
  • Set Options to Item Definitions
  • Select the Item Types tab and select your type of information
  • Choose your new view from the Tree View drop-down list
  • Save and close the schema

After you have made this change, all hierarchies of this type of item will be shown using your new hierarchical view.

Related Articles

See your hierarchy graphically, video on creating a hid

Make a Hierarchy Diagram (HID)

How to change the shape of your HID

Can I control the shape of a HID?

X-Ray Day 2017

 X-Ray Day 8th November 2017

X-Rays  are a form of electromagnetic radiation or “ray” for short.

When first discovered, these mysterious rays were nothing like anything that had been described before, hence the ‘X’ name has stuck.

X-rays have a wavelength less than 10 nanometres, that is, they are shorter than those of UV, and longer than those of gamma rays.  It was a German scientist Wilhelm Röntgen often credited with their discovery.

3SL image with x-ray effect
3SL X-Ray

Looking Inside Cradle

Thankfully there is no need to use X-Rays to look inside your Cradle project.

Information once stored can be recalled by Queries and presented in Views or Forms. Output can be directed to HTML or RTF tables, shown graphically as a Hierarchy diagram, explored by clicking links. Formal publishing to Microsoft® Word documents can be achieved through Document Publisher.

In short there is no mystery to your data once inside Cradle unlike our bones, welded joints or airport suitcases you can easily see your data.

Celebrate on X-Ray Day 2017

Celebrate the genius of a very useful tool in the x-ray machine. Whilst we don’t advise you have an x-ray for fun, you could download another useful tool here!

Load Cross Reference Links

Cross references, or links, are used to connect items in the database. Each cross reference connects two items. A cross reference represents the fact that the two items are related in some way. Sometimes, it is helpful to load cross reference links en masse from an external file.

Types of File to Load

Cradle can load data from files in three main formats:

  • Cradle
  • CSV / TSV, comma separated value or tab separated value
  • XML, there are many possible dialects of XML

Microsoft Excel® can easily produce CSV files. Also, it is easy to work with collections of simple data in Excel. Therefore, we recommend that you use Excel to load cross reference links into Cradle using CSV files.

Example

In this blog entry, we will assume that you want to load cross reference links between user-defined items, such as system requirements and verifications, or test cases to test results. So, if you want to do anything else, please look in the reference section below for links to the Cradle help.

In our example, we will create links of type FRED from PROCR items to SR items.

Create Cross Reference Links

You will need the following columns in your Excel spreadsheet:

  • Type, use the value: NOTE_NOTE
  • Link Type, the link type of the cross references that you want to create. In our example, this is the link type: FRED.
  • From Info Subtype, use the value: NULL_INFOSUB
  • For From Model Namespace, use the value: MH_IGNOREMODEL
  • From Number, this contains the Identity of the item at the from end of the cross reference. In our example, this is the Identity of the PROCR item.
  • From Type, this contains the type of item at the from end of the cross reference. In our example, this is: PROCR.
  • To Info Subtype, use the value: NULL_INFOSUB
  • For To Model Namespace, use the value: MH_IGNOREMODEL
  • To Number, this contains the Identity of the item at the to end of the cross reference. In our example, this is the Identity of the SR item.
  • To Type, this contains the type of item at the to end of the cross reference. In our example, this is: SR.

These fields can be in any order.

load cross reference links
Define Cross References in Excel

Load Cross Reference Links

You can load the CSV file containing your links by:

  1. Select Import from the Project tab in WorkBench
  2. Set: File Type to be: CSV
  3. Then, set: Info Type to be: Cross References
  4. Also, set: Overwrite to be: Off, as this is safer than the other options(!)
  5. And set From file to be where your CSV file is stored
  6. Click Import
load cross reference links
Load Cross Reference Links

You will be asked to define the mapping between fields in the CSV file and the attributes of cross references. Because the column headings in Excel match the names of the attributes, everything is mapped automatically:

load cross reference links
Load Cross Reference Links – Field Mapping

Click OK to load cross reference links from the CSV file.

Link Rules

The link rules defined in your schema are used to control if cross references will be imported from your CSV file. You can set an option to ignore your link rules, if you want to.

Dangling Links

Importing cross references this way may create dangling cross references. A cross reference is dangling if the item at its from end, or its to end, does not exist. Cradle allows you to import these cross references because it would be too restrictive to prevent you doing this.

You can detect and remove dangling cross references using the Cross Reference Integrity check in the Project tab in WorkBench.

Reference in Cradle Help

You can review the details of Cradle’s CSV file format in the Cradle help. Every Cradle system contains the Cradle help. You can access this help from the Help tab in every Cradle UI, and (on Windows) from the Cradle Help item in the Start menu.

We also provide the Cradle help on-line in our website:

https://www.threesl.com/cradle/help/

You can access the detailed help for Cradle’s CSV file format here:

https://www.threesl.com/cradle/help/7.3/Import%20Export/Other/csv_fileformat.htm

Functional and Non-Functional Requirements

A Requirement that works and one that doesn’t?

Grammatically the difference between the types of requirement could be seen like that, but not so in RM (Requirements Management) parlance. Functional and Non-Functional Requirements are a what and how of engineering.

HID showing how functional and non-functional requirements link to form the overall set
Interlinked Functional and Non-Functional Requirements

Functional Requirement

These define what the features are. “The User Interface board shall send an enable signal when the user presses the On key”
or “The finance reporting mechanism shall produce a summary report automatically at the end of each month”. These requirements tell the designer/implementer what the systems need to do. They can be read and agreed by the customer and will align with their expectations of the system.

Functional requirements are not limited to actions. They can include regulatory or safety requirements, “The system shall be protected and able to be certified to IP44”, or internal rules “The output format shall be commensurate with detail explained in the operating procedures for the production line”. They can reference other external requirements or standards. “The electrical interface shall be compatible with USB 2.0 standards using type A connectors, verified by a third party.”

Non-Functional Requirement

These define how the system will operate. They will place constraints and capacities on the system that can be measured.  “The User Interface  enable signal shall be a TTL level present within 0.25 seconds of the user making contact with the physical interface” or “The finance reporting mechanism shall be capable of summarising 100K entries into the 10 specified categories”.

These limits and descriptions provide bounds within which the Functional Requirements can me met. “The system shall allow users to cross the road safely” is a wide Functional Requirement. “The user shall not need to interact directly with the facility”, “The design shall comprise of a fixed physical system requiring no power”. Looks like we’re building a bridge or subway rather than a pelican crossing then!

Lines are Drawn

There is always going to be a grey line between the two areas. Some will depend where the responsibilities end and so on one project what is deemed a functional requirement. “The interface must be USB 2.0”, is a main operating characteristic that our system can not change and is needed to interface to an external system. On another project the functional requirement may be “The main system should interface with up to three external input and output devices” and the design team may decide “All inter product interfaces shall use USB 2.0 standard communications”

In the ideal world everything should operate 100% of the time without failure and should be completely intuitive. Should occur without delay and should be fixable for ever. However, the world we live in is not ideal. System designers need to recognise that. Non-Functional Requirements can define these limits and manage expectations, from both a contractual and measurable quality point of view.

  • “To aid the user to perform the task consistently. The UI shall provide guidance in the form of fixed text and sequenced indicators.”,
  • The system shall have an availability no less than 99% of the time”, 
  • “Visual and audible feedback shall be provided within 0.2 seconds of any interaction”,
  • “Design components should have an availability before EoL of two years minimum”

For every system these user experience, reliability, performance criteria, and through lifecycle considerations should be made.

3SL Email Filters

We all use e-mail as a reliable method for our personal and business communications. However, as we all know, vast numbers of spam, junk and malicious e-mails are also sent every day. Everyone needs protection from the damage that clicking a link or attachment in just one e-mail can do. 3SL has recently changed our 3SL email filters to further reduce our exposure to such threat vectors. We expect that you and your organisation also update your filters regularly.

3SL email filters
Block Spam and Malicious E-Mails

This blog post is a summary of what the 3SL email filters will do.

We are publishing this so that you can reliably send your emails to us. We do not expect that the 3SL email filters will block any of your emails. But if one of your emails is blocked, this blog post may help to explain why.

Principles of 3SL Email Filters

We will obviously not disclose full details of the 3SL email filters. You would not expect us to do something that silly. There are some general principles which we will publish, which are:

  • The more malicious an email is, the less likely our mail server is to provide an informative response to the sender, or their mail server
  • The more malicious an email is, the more likely we are to provide false responses, or no response, to the sending mail server
  • We use all available blacklists to ignore all known malicious senders and mail relays. Either we access them online, or we keep local copies and then update them regularly.
  • 3SL always reports malicious financial emails to the organisation that they are supposed to come from
  • We report all malicious e-mails to blacklist sites wherever possible
  • We automatically block emails based on their from, to, subject, content, formatting and attachments
  • Any e-mails sent to undisclosed recipients or with multiple from tags will be rejected
  • We operate our own blacklists, for people we dislike
  • Emails from people we especially dislike are automatically sent to spam reporting sites
  • We operate our own whitelists, for people we like!
  • All e-mails and all of their attachments are scanned for viruses and other nasty tricks(!)

Email Attachments

The types of attachment to an email is an important part of the 3SL email filters. Therefore, the 3SL email filters are very sensitive to the types of files that are attached to e-mails.

We currently block everything that is remotely executable. This includes the obvious ones, such as:

  • exe files
  • scr files
  • msi files
  • .bat files
  • .cmd files
  • .lnk files
  • .com files

and many others.

We also block file types that are common vehicles for malicious code, including the obvious ones:

  • .jar files
  • .ace files

and others that we will keep to ourselves!

In total, we block over 20 file types.

Accepted Attached File Types

We want to receive your e-mails! Therefore, if you need to send any attachments with your e-mail, only send:

  • Microsoft Office files
  • Open Office files
  • PDF files
  • Plain or rich text files
  • Cradle import/export files
  • Simple images

We will detect macros in e-mail attachments. So, please don’t send us any file with a macro inside it!

If you send a file containing a macro, then either your e-mail will be rejected or, if you are in our whitelist – and this includes customers – then your e-mail may be logged as spam, or it may be rejected.

Alternatives to Email for File Exchange

If we need to exchange files with you that would be blocked by our email system, or by yours, there is an alternative!

Every login account in our website can have a file transfer area. You can use this area to download any type of file from us. You can use this area to upload any type of file to us. Therefore, this mechanism avoids any need for us, or you, to send files by e-mail that either of our mail systems would block.

We think that this mechanism is very useful. 3SL asks all of our customers to consider using this mechanism. We hope that you will agree.  Therefore:

  • If you have a login to our website, we can enable this facility for you.
  • If you do not have a login to our website, please register and create one!

Your organisation may also provide a secure file transfer mechanism. If so, tell us about it. We will be pleased to use it.

Help Us to Help You

Obviously, we never send anything malicious to anyone. Equally obviously, we do not ever knowingly send any emails that could be regarded as spam, malicious or suspicious. So we would be concerned if you do not receive any of our emails.

Therefore, please tell us if you believe that we are sending emails that are being blocked by your mail system.

If this happens, then we will work with you and your IT to either:

  • Add 3SL to your organisation’s whitelist, and therefore none of our e-mails will ever be blocked
  • Or we will change the format of our emails so they are acceptable to your organisation