Exercise 2.4 - Rules in Source Map, Severity Drop - and Bags

Modified on Fri, 13 Oct, 2023 at 6:23 PM

Like we did for the Target Map, let's have a look at the different type of Rules you have at your disposal in the Source Map. 

There is also a Disposition unique to the Source Map called drop. Finally, since you are no longer a novice in Hopp, we'll have a look at the something extremely versatile but at the outset also a bit more difficult to explain: The Bags.

But first the Rules:

This Sketch video explains the rule types in the Target- and Source Map 

Condition Rule
Called before starting the extraction of source data for instances of a child Business Object. If the Condition Rule returns false this child Business Object will be skipped and no instances will be produced for the child in the Target interface.

Note that Condition Rules cannot be called from a root Business Object - only from child Business Objects
Exit RuleCalled after ending the processing of a Business Object and can only return a Boolean. If the Exit Rule returns false, the Business Object is discarded and no data will be created for this Business Object - including descendants

Exit rules are often used to cross-check the data created for the Business Object
Filter Rule
You can specify one or more Filter Rules to be called for a Source Object. If just one of the Filter Rules returns false the Source Object will be skipped and its Source Fields will not be available
Export Rule
Called to calculate the value to be assigned to a Target Interface Field.

Just like in the Target Map, all these rules can raise Flags, and when a rule is used in a specific context you can decide how to react to these Flags. Including firing an Event, assign a Severity and an Receiver.

Disposition Drop

In the Source Map you have one more Severity at your disposal. In the Target Map you had 

  • Full Discard
  • Partial Discard
  • Retain

Here in the Source Map you can also use

  • Drop: By assigning the Disposition Drop to a Flag anywhere you make the current Business silently go away. No Event will be fired to be shown in the Tracker. You can use this Severity if some condition deep within the Source data renders the current Business Object irrelevant.


Both in the Target Map and also here in the Source Map you have probably noticed a folder node in the Project Explorer tree view - under Rule - called Bag. In addition, when opening the Value drop-down in various places, you have seen the value type Bag Property. Bags are very useful but also an advanced subject. So far we have glided silently past and let you wonder all by yourself - but okay then, let's talk about Bags.

The rules you have been using so far 

  • receive some Parameters, 
  • can raise some Flags 
  • and return a value. 

They live in the context they are called and then immediately die away. They have no way of storing any state between calls. Imagine for instance in some Business Object you wanted to count the number of a certain child Business Object. The rules would have a hard time doing so, because they can't store state - the count - between calls.

Enter Bags that can store state. A Bag is created the first time it is used in a root Business Object (for instance Customer, Account or Card). While the root Business Object - and all its children - is been processed, the Bag exists and can store state. And it - and its state - is thrown away as soon as the next root Business Object starts processing.

The Bag can have - but does not need to have - one or more Methods, and these Methods can be called anywhere in the mapping you are using rules. In addition to methods, the Bag can have Properties. The properties in turn can be used to assign values to Fields or Parameters. The Methods of the Bag can store state in the Properties.

As an example, let's say that every child Business Object Statement under the Business Object Account had to deliver a Target Object containing a numeric Sequence Field. This example could look like this

  • The Account Business Object calls a method on the Bag - as an Entry Rule - initializing the SequenceNumber Property of the Bag to 0
    • Each of the child Business Objects Statement under the Account - as an Entry Rule - calls another Method on the Bag that increments the SequenceNumber Property
    • On the Target Object in question under each Business Object Statement, the SequenceNumber is used as a value type Bag Property to assign the value to the Sequence Field

While you of course specify the Methods and Properties of the Bag in Studio so you can use them elsewhere, the Bag must afterwards always be manually implemented. The manual implementation - as all others - can access Valuesets, Constants, other Rules and indeed other Bags and their Methods and Properties.

Here's a sketch video explaining Bags:

Bags explained

What happened here?

,Well, nothing really happened, but we did go through the rule types specific to the Source Map, the Condition Rules, the Filter Rules and the Export Rules. In addition, you have gained some knowledge of the Bags that combine several Methods with Properties holding state.

In fact, with the Export Rules and Bag Properties you have added value types to your arsenal, so now you have them all:

  • Literal
  • Constant
  • Source
  • Calculated: Use an Export Rule or a Bag Method to calculate the value to assign
  • Bag Property: Use the current value of a Bag Property to assign

Finally, you also have a new Severity, unique to the Source Map, Drop that will just silently drop the current Business Object from the migration stream.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article