Override specific Profile values
When a Profile-assigned object should differ for a specific field, set the value explicitly when creating or updating the object. Explicit values take precedence over Profile values; other attributes still inherit from the Profile.
Override on creation​
- Web interface
- GraphQL
- Navigate to the object list for your node kind
- Click Add <Kind>
- Select the Profile in the Profile field
- Manually fill in the attribute you want to override — the explicit value takes precedence over the Profile
- Click Save
Set the override value alongside the profiles reference:
mutation {
<Kind>Create(
data: {
name: { value: "<object-name>" }
<attribute>: { value: <override-value> }
profiles: [{ hfid: ["<profile-name>"] }]
}
) {
ok
object { id }
}
}
The object uses <override-value> for that attribute and inherits everything else from the Profile.
Override on an existing object​
- Web interface
- GraphQL
- Open the object
- Click Edit
- Set the attribute value directly in the field
- Click Save
If the object already exists with Profile-inherited values, update the specific attribute:
mutation {
<Kind>Update(
data: {
hfid: ["<object-name>"]
<attribute>: { value: <override-value> }
}
) {
ok
}
}
Verify​
- Web interface
- GraphQL
- Open the object
- Click the info icon next to the overridden attribute
The metadata shows the value is not inherited from the Profile (source is empty).
Query the metadata for the overridden attribute to confirm it is no longer inherited:
query {
<Kind>(name__value: "<object-name>") {
edges {
node {
<attribute> {
value
is_from_profile
}
}
}
}
}
is_from_profile: false confirms the value was set explicitly and is not inherited from the Profile.
Override a relationship​
Profiles can also source relationship values for both one and many cardinality relationships. Overriding a Profile-sourced relationship behaves differently from an attribute: a relationship is either entirely inherited from a Profile or entirely not. That is, all peers on a given relationship either share the same source Profile or none of the peers have a source Profile.
As soon as you modify a Profile-sourced relationship on an object, by setting it explicitly or by adding or removing a peer, then all of the relationship's peers lose their Profile sourcing. Peers that the Profile also provided are kept (they are not deleted); only their Profile source is cleared. The Profile itself stays assigned to the object.
- Web interface
- GraphQL
- Open the object
- Click Edit
- Add or remove peers in the relationship field
- Click Save
Every peer in the relationship is now object-defined; the Profile no longer sources it.
Set the relationship explicitly on the object to override it:
mutation {
<Kind>Update(
data: {
hfid: ["<object-name>"]
<relationship>: [{ hfid: ["<peer-name>"] }]
}
) {
ok
}
}
Adding or removing a peer has the same effect, clearing the Profile-source from every peer:
mutation {
RelationshipAdd(
data: { id: "<object-id>", name: "<relationship>", nodes: [{ id: "<peer-id>" }] }
) {
ok
}
}
To confirm a relationship is no longer inherited, query the source metadata of its peers. An empty source means the peer is object-defined:
query {
<Kind>(name__value: "<object-name>") {
edges {
node {
<relationship> {
edges {
node { id }
properties { source { id } }
}
}
}
}
}
}
How precedence works​
Explicit values on the object beat Profile values. When multiple Profiles also define the attribute, priority decides which Profile would have applied if no explicit value was set — see Priority and inheritance.
Next​
- Update a Profile — change Profile values without touching individual overrides
- Use multiple Profiles — composition with priority