Skip to content

CAME_FROM Party-to-Party

Description

Describes what agency a client came from before they signed with UTA. We use this relationship only for parties with a client role.

Label

:CAME_FROM

Valid nodes

FromRelationshipToCardinality
Party
Party with a :HAS_ROLE relationship to a :Role {name: "Client"}
:CAME_FROMParty
Party with a HAS_ROLE relationship to a :Role { name: "Agency" }
0..n

Properties

CAME_FROM uses the standard relationship properties.

CREATE

If the......party node is...The ACID transaction should be...
Tonot an organization with an active Agency roleReject
A party can only come from another party with a :Role { name: "Agency" }
ToUnited Talent AgencyReject
A party can not come from UTA
Fromnot a person or organization with a Client roleReject
A party can only come from another party with a :Role { name: "Client" }

We should not enforce any sequencing of the timeline of CAME_FROM relationships. We expect our data here is currently very spotty and thus it may be difficult to create the full picture without leaving gaps or overlaps in the sequencing. We will therefore allow authorized users to create any CAME_FROM relationships they wish, as long as they meet the business rules described above. It is very possible users will create duplicate and overlapping relationships. This is a tradeoff we will make in order to encourage data collection.

The active relationship property should be set to true as default on all CREATES. In inactive CAME_FROM relationship indicates a deletion.

TIP

Application developers are encouraged to make the timeline sequencing for this relationship very visible to the end user, so they will be motivated to correct it.

UPDATE

Updates are freely allowed for authorized users, with the exception of any change to the relationship properties id and active.

DELETE

On a DELETE the relationship should be deactivated with the termReason and thruDate required. Note that it is not semantically correct to say the CAME_FROM relationship "ended" on a certain date -- only the fromDate makes sense. Therefore, a deactivated relationship is treated as a deletion and the deactivated relationships should not be shown in most applications.

Examples

cypher

// Note in this example we are requiring the client and the
// agency to have active roles. This isn't really required;
// it may make sense to add a CAME_FROM relationship for 
// former clients, or from agencies that are no longer in business.

MATCH       (client:Party { id: $id })
        -   [:HAS_ROLE { active: true }]
        ->  (:Role { name: "Client" })
MATCH       (agency:Party { id: $agencyId })
        -   [:HAS_ROLE { active: true }]
        ->  (:Role { name: "Agency" })
MERGE       (client)-[newRel:CAME_FROM { 
              id: randomUuid(),
              subType: "",
              active: true,
              private: false,
              fromDate: $fromDate,
              thruDate: "",
              termReason: ""
            }]->(agency)
RETURN      newRel{.*}

Confidential. For internal use only.