My name is Angelika Salmen, and I am the product owner of Situation Handling. With this blog post series, I want to give you guidance about how to start creating your own situation use cases. After you’ve drafted your use case, let’s take a look at the detailed situation design.
Once again, put yourself into the shoes of the user and think about how they should be informed about the situation.
Per default, every situation is visible in the My Situations – Extended app on SAP Fiori launchpad. The tile also shows whether any situations exist and, if so, how many.
Note: For SAP S/4HANA you need to activate the OData services for the Situation Handling apps.
For situations that are very urgent or important, you can also enable notifications that appear on SAP Fiori launchpad. You have various options for configuring notifications.
If you expect only a few situations or if you need precise information, I recommend single notifications:
If you expect many situations and / or if you use batch-based situation triggers, I recommend using one of the aggregation functions that avoid potential overload for the user. Aggregated notifications contain multiple situations detected at one point in time:
In addition to sending notifications when a situation is created, you can also notify the user about updates or when a situation has been closed. There are three standard notification behaviors:
The notifications are part of the condition design, and they are closely related to the life cycle of a situation.
Note: For SAP S/4HANA take a look at the prerequisites for setting up notifications.
The next question is: Who should be informed? You define the right group of users with Responsibility Management. This applies to both the display of situations in the My Situations – Extended app and to notifications.
You can define recipients by teams or by rules.
Depending on your use case you can define one or more conditions. You need to define at least one condition that creates a situation. Where possible, you should also consider automatically closing situations that are no longer valid from a business perspective.
Example 2: Related data of a situation changes, for instance:
If you define multiple conditions, you can adapt the situation and notification texts for each condition. You can also adapt the notification behavior for each condition.
Think about the texts with which you want to inform the user, for example:
Different trigger objects may cause situations. If you use multiple trigger objects, you need to define the conditions, the situation display, and the notification behavior for each trigger. Make sure you use the same configuration for alternative triggers to provide a consistent user experience.
For example, let’s look at an overbooking situation for flights which includes the following circumstances:
Triggers 1) and 2) create a situation and should have the same texts and notification behavior that inform about the new situation.
Triggers 3) and 4) close a situation and should also have the same notification text and behavior.
There are two ways to trigger a situation. A situation can be detected after a business transaction was executed (event-based trigger) or with periodical checks (batch-based trigger).
If you want to inform the user right after a situation has been created, you need to configure an event-based trigger that listens to triggers such as created, updated, and deleted.
If periodical checks are sufficient, I recommend using a batch-based trigger. You can define periods from once a month to multiple times per day.
If you want to detect blockers such as pending confirmations or missing approvals, you also need to use batch-based triggers.
If you expect lots of situations, I recommend configuring batch-based triggers and, where possible, combining them with aggregated notifications to avoid information overload for the users.
Note: For SAP S/4HANA consider the prerequisites for setting up batch jobs.
Finally, there are some specific options for configuring situations: instance closing behavior and trigger accumulation.
The instance closing behavior defines if and when a situation can be detected again after it has been closed. The closing behavior applies to any closure type: manual closing, closing with a solution proposal (quick action), and automatic closing by the system.
If you select Close & Delete, a situation is deleted from the system after it has been closed.
Since the situation is no longer known to the system, situations can be detected again. Here are some examples:
You may also consider using Close & Delete if the only option for closing a situation is manual, and if you want to avoid data accumulation until an automatic clean-up is processed.
With Close & Delete the user cannot override the system. If the user closes a situation manually while the system data is unchanged, the situation will be detected again with the next trigger event or batch run. This can result in a ping-pong effect for the user – especially for frequent batch-based triggers.
If you close a situation using Close & Keep, only its status changes from open / in progress to resolved / obsolete / invalid. This means that further updates of the closed situation are ignored, and the user is no longer informed about them.
I recommend choosing this behavior if you want to empower the user to override the system, for instance:
Since the closing behavior applies to all types of closing, further situation updates will also be ignored if the situation was closed by a quick action, or by a closing condition. Let’s take another look at the budget example.
If the budget consumption raises and surpasses 80 % again, the user will not be informed if you used Close & Keep.
If you want the user to override the system but still want to inform them about highly critical updates you can use the reopen feature. For the budget example you would need a 3rd condition:
This also means that the user can no longer override the system if over 95% of the budget is consumed.
You have different options with which to design a situation, depending on which anchor and trigger objects are involved. For example, bookings that surpass the maximum seating capacity of a plane create an overbooking situation. Let’s take this example to illustrate the flexible design options. Choose the option that best fits your use case.
The simplest case is if anchor and trigger object are the same. The situation is triggered based on the data and the trigger behavior of that object.
Alternatively, you can design the situation for the flight since it also has the seating data.
Now let’s model the overbooking situation with two objects. You can define flight as anchor object and booking as trigger object. That means that the flight object indicates the situation while it is caused by the bookings. The combination of objects is especially valuable if the situation needs data from both trigger object and anchor object.
The situation designs discussed above either trigger a situation for each single event, or one situation indicating the number of issues. Trigger accumulation combines both worlds: the user receives 1 situation that contains the details of all single triggers. Trigger accumulation requires an event-based trigger.
Let’s take another look at our overbooking example.
Trigger accumulation can also take multiple trigger objects into account. Different root causes, for instance, can be block a service order:
Different situation triggers can also have the same trigger object but combined with different trigger events. The overbooking example, could have the following triggers:
Now you have the detailed design of your situation case. In the next blog post you can see how to map your use case to existing artifacts.
You can also refer to: