apoc.uuid.install
Procedure Apoc Extended Deprecated
CALL apoc.uuid.install(label, {addToExistingNodes: true/false, uuidProperty: 'uuid'}) yield label, installed, properties, batchComputationResult | it will add the uuid transaction handler
for the provided label and uuidProperty, in case the UUID handler is already present it will be replaced by the new one
Signature
apoc.uuid.install(label :: STRING?, config = {} :: MAP?) :: (batchComputationResult :: MAP?, label :: STRING?, installed :: BOOLEAN?, properties :: MAP?)| Please note that this procedure is deprecated. Use the following ones instead, which allow for better support in a cluster: 
 where  | 
| This procedure is not intended to be used in a cluster environment, and may act unpredictably. | 
Config parameters
The procedure support the following config parameters:
| name | type | default | description | 
|---|---|---|---|
| addToExistingNodes | Boolean | true | adds UUID values to existing nodes. Will override an existing value. | 
| addToSetLabels | Boolean | false | adds UUID values even when there is a set label. For example:  | 
| uuidProperty | String | "uuid" | the property key for the UUID value | 
Output parameters
| Name | Type | 
|---|---|
| batchComputationResult | MAP? | 
| label | STRING? | 
| installed | BOOLEAN? | 
| properties | MAP? | 
Enable automatic UUIDs
This procedure is part of a set of procedures that handle automatic adding of UUID properties, via the UUID Handler Lifecycle. The UUID handler is a transaction event handler that automatically adds the UUID property to a provided label and for the provided property name.
By default automatic adding of UUIDs is disabled.
We can enable it by setting the following property in apoc.conf:
apoc.uuid.enabled=trueUsage Examples
We need to create a unique constraint for the label and property on which we want to add UUIDs.
If we try to setup UUID creation on nodes with the Person label without adding a constraint, we’ll get an exception as shown below:
CALL apoc.uuid.install("Person");| Failed to invoke procedure  | 
We can create a constraint on the (Person, uuid) label/property pair by running the following query:
CREATE CONSTRAINT FOR (person:Person)
REQUIRE person.uuid IS UNIQUE;And now we can automatically add UUIDs to all new nodes, as well as existing nodes, by running the following query:
CALL apoc.uuid.install("Person");| By default, UUID values will be added to existing nodes and will override existing values.
We can pass the config  | 
| batchComputationResult | label | installed | properties | 
| {failedParams: {}, committedOperations: 3, batch: {total: 1, committed: 1, failed: 0, errors: {}}, wasTerminated: FALSE, batches: 1, timeTaken: 0, retries: 0, errorMessages: {}, total: 3, operations: {total: 3, committed: 3, failed: 0, errors: {}}, failedOperations: 0, failedBatches: 0} | "Person" | TRUE | {uuidProperty: "uuid"} | 
Now let’s create a new Person node;
CREATE (:Person {name: "Tom Hanks"});And if we look for all Person nodes, we’ll see it has a uuid property:
MATCH (p:Person {name: "Tom Hanks"})
RETURN p;| p | 
|---|
| (:Person {name: "Tom Hanks", uuid: "cec34337-9709-46af-bbb7-9e0742d8aaa7"}) | 
The uuid property will be created also with a label SET when the addToSetLabels configuration is set to true. For example:
CREATE (:AnotherLabel {name: "Tom Hanks"});
// ...
MATCH (n:AnotherLabel) SET n:Person;If we want to use a different property key for our UUID value, we can pass in the uuidProperty key, not forgetting to first setup a constraint:
CREATE CONSTRAINT FOR (person:Person)
REQUIRE person.myUUID IS UNIQUE;CALL apoc.uuid.install("Person", {uuidProperty: "myUUID"});| batchComputationResult | label | installed | properties | 
| {failedParams: {}, committedOperations: 1, batch: {total: 1, committed: 1, failed: 0, errors: {}}, wasTerminated: FALSE, batches: 1, timeTaken: 0, retries: 0, errorMessages: {}, total: 1, operations: {total: 1, committed: 1, failed: 0, errors: {}}, failedOperations: 0, failedBatches: 0} | "Person" | TRUE | {uuidProperty: "myUUID"} | 
And now let’s find those Person nodes again:
MATCH (p:Person {name: "Tom Hanks"})
RETURN p;| p | 
|---|
| (:Person {name: "Tom Hanks", uuid: "cec34337-9709-46af-bbb7-9e0742d8aaa7", myUUID: "d09f177b-ff91-4eb9-aac0-73e7a850c9ba"}) |