Migrate Relationship Class (Data Management)

Summary

Migrates an object ID-based relationship class to a global ID-based relationship class.

Usage

  • This tool will modify an existing relationship class that is object ID-based to a global ID-based relationship class to comply with runtime geodatabase requirements.

  • The origin feature class or table that is used in the Input Relationship Class parameter value must have a GlobalID field prior to using this tool. The destination class must also have a GlobalID field.

  • The existing input relationship class must be based on the ObjectID field. The data cannot be archive enabled.

  • This tool supports versioned and nonversioned data as input.

  • Feature-linked annotation created in ArcGIS Desktop must first be upgraded using the Upgrade Dataset tool.

  • It is recommended that you make a backup copy of the data used as input for this tool.

Parameters

LabelExplanationData Type
Input Relationship Class

An object ID-based relationship class that will be migrated to a global ID-based relationship class. The origin and destination feature classes or tables must have an existing GlobalID field.

Relationship Class

Derived Output

LabelExplanationData Type
Migrated Relationship Class

The updated relationship class.

Relationship Class

arcpy.management.MigrateRelationshipClass(in_relationship_class)
NameExplanationData Type
in_relationship_class

An object ID-based relationship class that will be migrated to a global ID-based relationship class. The origin and destination feature classes or tables must have an existing GlobalID field.

Relationship Class

Derived Output

NameExplanationData Type
out_relationship_class

The updated relationship class.

Relationship Class

Code sample

MigrateRelationshipClass example 1 (Python window)

The following Python window script demonstrates how to use the MigrateRelationshipClass function in immediate mode.

arcpy.MigrateRelationshipClass_management(r'C:\Data\Relationships.gdb\OneToMany')
MigrateRelationshipClass example 2 (stand-alone script)

The following script demonstrates how to use the MigrateRelationshipClass function in a stand-alone script.

# Name: MigrateRelationshipClass_Example.py
# Description: Migrate an ObjectID-based relationship class to a GlobalID-based
#       relationship class. This script lists the ObjectID-based relationships classes
#       in a workspace, checks for GlobalIDs in the origin, then runs the tool

# Import system modules
import arcpy

# Set local variables
workspace = r'C:\Data\Relationships.gdb'

# List all of the relationship classes within the given workspace
rc_list = [c.name for c in arcpy.Describe(workspace).children if c.datatype == "RelationshipClass"]

# Build a list of relationship classes which have an OBJECTID based origin class key
rc_migrate = []
for rc in rc_list:
    rc_path = workspace + "\\" + rc
    rc_desc = arcpy.Describe(rc_path)
    for item in rc_desc.OriginClassKeys:
        if "OBJECTID" in item:
            rc_migrate.append(rc_path)

# Check that the origin feature classes have Global Ids
rc_final = []
for rel in rc_migrate:
    originfc = workspace + "\\" + arcpy.Describe(rel).originClassNames[0]
    if arcpy.ListFields(originfc,"","GlobalID"):
        rc_final.append(rel)
        print("Adding {0}  to the list to migrate. \n".format(rel.rsplit("\\",1)[1]))
    else:
        print("{0} must have Global Ids to migrate relationship class.\n".format(originfc.rsplit("\\",1)[1]))

# Pass the list of valid relationship classes into the Migrate Relationship tool
print("Passing valid relationship classes into the Migrate Relationship Class tool.\n")
for rel_class in rc_final:
    print("Migrating {0}... \n".format(rel_class.rsplit("\\",1)[1]))
    arcpy.MigrateRelationshipClass_management(rel_class)
    print(arcpy.GetMessages() + "\n")

Environments

Related topics