Exercise 6.2 – Solve Event I0011 - Customer ({0}) does not exist or is rejected in migration

Modified on Fri, 13 Oct 2023 at 06:29 PM

In a previous exercise in the last section, you determined that the event I0011 was derived from another Event, E0006. 


In turn, Event E0006 discarded a number of Customers, and Event I0011 was fired for Cards that depend on these discarded Customers.


So, to resolve Event I0011 on Card, what you really need to do is to resolve the Event E0006 on Customer.  



Solve Event E0006 - AddressLine {0} is too long. Truncated from ({1}) to ({2})


Looking at Event E0006, it is clear that it is fired in the export because the Source Engine detects that an AddressLine is too long to be accepted by the interface to the Target Engine. 


The Source Engine actually shortens the AddressLine so it fits - but then proceeds to discard the entire Customer, because the Disposition of Event E0006 is set to Full discard.


This is way too severe. A more approach would be to change Disposition to Retain so the Event won't throw away anything but then to change the Impact to Advisory to signal to the Partition Users, that they should either verify the shortened AddressLine or modify the Address in the Source System. So this is what you will do below.


Modify the Mapping

  1. Open the Workshop Source Map in Studio

  2. Open the Event E0006 and change the Disposition from Full discard to Retain and the Impact from Critical to Advisory

  3. Validate the Source Map and ensure there are no Validation errors

  4. Publish the Source Map to the Generator


Generate the Engine Code

  1. Open the Workshop Solution in Visual Studio

  2. Locate and right click either one of the Workshop.SourceEngine Custom project

  3. Select Hopp: Generate... in the context menu

  4. Verify that the published file is new and click Ok to generate the code


Deploy the Source Engine

  1.  Locate and right click the Workshop.SourceEngine Custom project

  2. Select Hopp: Deploy... in the context menu

  3. Check Restart and Run Setup and click Ok to deploy the engine

Migrate the affected Customers


By lowering the Disposition of Event E0006 from Full discard to Retain, we now expect the affected Customers to pass and it is time to iterate the migration for these. But there is a little twist here. 


The Customers were rejected by the Source Engine in the Export step. So initially the Customers affected by the Event E0006 must be exported again. Exporting the Customers will of course purge both the Export and Import results - including Events - for the Customers. Following the export of the Customers, it is also necessary to run the import on the same Customers. However, since the export step clears away Event E0006, it can present a problem afterwards to selecting the same Customers for the import step.


In this situation, after the export step, the Customers will show up in the Portal as missing under the Import, so in this case, it would be reasonable just to import the missing Customers. But bearing in mind that - in a bigger project - you or other team members may be iterating the export of other Customers as well, this approach of just running the import on the missing Customers may be too simple and include too many Customers in the iteration.


Itemsets

For this reason, Portal Operations has the facility of Item Sets. An Item Set is simply an identified set of Business Object instances ('items') that can be exported and Imported. An Item Set can be created based on the instances that fired a given Event, which is what you will do in this case.     


As a side note: With knowledge of the schema of the underlying migration database of the Track, it is in fact possible to supply an SQL query to return the instances to include in an Itemset.


To create an Itemset for the Customers that fired the Event E0006, go to the Portal Operations panel Source / Events:



In the context menu for the Event E0006 on Customer and select the Item Set(s) menu item to submit a job to build the Itemset. Verify in the Job List that the job is completed successfully.


Go to the panel Execution / Item Sets to see the new Itemset:



Export and Import the Customers

To iterate the Customers of the Itemset:

  1. Export the Customers from this Item Set by selecting the Export... item from the context menu to submit a job to export the Customers in the item set

  2. Verify in the Job List that the job completes successfully, and the Customers are no longer rejected by the export
  3. Now import the Customers from the Itemset by selecting the Import... item from the context menu

  4. OBS: Before you click the Confirm button, ensure that Include descendants is checked

  5. Verify in the Job List that the job is completed successfully and that the Customers have been imported

  6. Even though the Itemset only contained the Customers that fired the Event E0006, the automatic resolution of dependencies done by Hopp did some magic here.  The dependencies are defined by the Relationships between the Business Objects that are created in the Studio Target Map. These dependencies enable the Hopp Runtime to recursively resolve the dependencies and run the import in multiple levels - ensuring that each level completes before progressing to the next level


Of course, in this exercise the count of Accounts and Cards to iterate is small - but even so, it would be quite complicated to identify the Accounts and Cards to iterate following the correction of the Customers. 


Imagine a real-life migration - it would be even more complex and it is difficult to overstate the value of this automatic resolution of dependencies.



Publish Result


To publish the new result to the Tracker, go to the Portal Operations panel Administration / Manage and check the Portal Operations Publish radio button:



In the dialog, move everything from the Available to the Selected box and click the Confirm button to submit a job to publish the result. 



Verify in the Job List that the job is completed successfully.


Test & Feedback 


When the published job has been completed, you can return to the Portal State and the Event List for Customer to see that the Event E0006 with Disposition Full discard and Impact Critical now has a count of 0. Instead, we now have a new occurrence of the same event with a Disposition Retain, Impact Advisory and a count of 5.


Likewise, Event I0011 on Card now has a count of zero:

 


If you're happy with the result, then commit your changes to the Repository.


What happened here?


You have been through another iteration of the HHopp cycle. This time you solved an Event on Customer that in turn solved some derived Events on both Account and Card. The exercise illustrated the power of the automatic and recursive dependency resolution in Hopp by identifying and migrating dependent Accounts and Cards for you.


The exercise also introduced the Itemset to, in effect, save a collection of Business Object instances to be Exported and or Imported. The Itemset comes in handy when it is necessary to iterate both the Export and the Import for a set of Business Object instances because the Export step in many cases will purge the Event identifying the instances to be Imported. 


Apart from that, it is also possible to supply an SQL query to pick and choose exactly the items to iterate. But this is a more advanced topic outside the scope of these exercises.

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 atleast one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article