{
    use esmith::util;
    use esmith::NetworksDB;

    my $LocalIP = $DB->get('LocalIP');
    return unless defined $LocalIP;    # Nothing to migrate yet
    $LocalIP = $LocalIP->value;

    my $LocalNetmask = $DB->get('LocalNetmask');
    return unless defined $LocalNetmask;
    $LocalNetmask = $LocalNetmask->value;

    my $ndb = esmith::NetworksDB->open
      || esmith::NetworksDB->create;

    # And update networks db shadow
    my ($localnet) = $ndb->get_all_by_prop( SystemLocalNetwork => 'yes' );
    my ($local_network) =
      esmith::util::computeNetworkAndBroadcast( $LocalIP, $LocalNetmask );
    if ( defined $localnet && $localnet->key ne $local_network )
    {

        # We need to delete the old record
        $localnet->delete;
        $localnet = undef;
    }
    if ( !defined $localnet )
    {
        # We need to convert an existing local network to system network
        $localnet = $ndb->get($local_network) ||
          # or we need to create a new system network record
          $ndb->new_record( $local_network, { type => 'network', } );
    }

    # Update the netmask while we are at it
    $localnet->merge_props(
        SystemLocalNetwork => 'yes',
        Mask               => $LocalNetmask,
    );

    # Make sure that localnetwork does not have a leftover
    # Router property if it was previously an additional
    # local network. Will fail silently if there is no
    # Router property
    $localnet->delete_prop('Router');
}