Migrating two parties and their contracts to a new participant node

The parties alice and bob are hosted on participant1. The alice party is the signatory of their contracts; bob is the observer. I need to migrate both the alice and bob parties and their contracts to a new participant2.

Can I migrate both during the same “down time”?

Disconnect

  1. val mrrp = mydomain.service.get_max_rate_per_participant
  2. mydomain.service.set_max_rate_per_participant(0)
  3. participant1.domains.disconnect(“mydomain”)
  4. participant2.domains.disconnect(“mydomain”)

Migrate alice

  1. step1_hold_and_store_acs(alice, participant1, participant2.id, “alice.acs.gz”)
  2. step2_import_acs(participant2, “alice.acs.gz”)
  3. step3_enable_on_target(alice, participant2)
  4. step4_clean_up_source(alice, participant1, “alice.acs.gz”)

Migrate bob

  1. step1_hold_and_store_acs(bob, participant1, participant2.id, “bob.acs.gz”)
  2. step2_import_acs(participant2, “bob.acs.gz”)
  3. step3_enable_on_target(bob, participant2)
  4. step4_clean_up_source(bob, participant1, “bob.acs.gz”)

Reconnect

  1. participant1.domains.reconnect(“mydomain”)
  2. participant2.domains.reconnect(“mydomain”)
  3. mydomain.service.set_max_rate_per_participant(mrrp)

Or do I need to reconnect the participants between the migrations?

  • Disconnect for alice
    Migrate alice
    Reconnect for alice

  • Disconnect for bob
    Migrate bob
    Reconnect for bob

Currently, there is one limitation around party migration: if you migrate Alice from P1 to P2, it is expected that P2 does not already know about a contract of Alice (which can happen if Alice and Bob are stakeholders on a contract and Bob is hosted on P2).

So the answer to your question is: you can’t migrate both Alice and Bob from P1 to P2 (if they share contracts). That will change with 2.9

1 Like