Skip to content

More granular metadata instead of complex XMLs  #4650

@jonathanwiesel

Description

@jonathanwiesel

Is your feature request related to a problem? Please describe.

Direct management of the source metadata is raising exponentially due to the increase of adoption in version control in the Salesforce ecosystem, this implies that conflict resolution needs to be done at source level, therefore resolving conflicts in Git.

Some metadata files are, in my opinion, too big and complex to be managed in a single file in order for its changes to be tracked and reviewed in a manageable manner, especially when many changes are involved, not to mention conflict resolution.

Describe the solution you'd like

My proposal would be that complex source files are separated in more granular sub files that can be managed more easily, similar to how it has been done with the SObject file that has been worked to, for example, be more granular to have each field in a separate file.

This could apply (but not limit) to the following metadata:

Independant (each part can be deployed, changes and deleted by itself, such as the custom fields)

  • Custom Labels
  • Workflows (rules, tasks, alerts)

Parts of a whole (each part needs to be merged to a single concept)

  • Profiles ⚠️
  • Permission Sets ⚠️
  • Flows
  • Layouts and Flexipages
  • Approval Processes

⚠️ I'm aware that for profiles and permission sets would be tricky taking into account how permission files currently work, meaning that if a permission is not part of the file it simply does not get overwritten but is not actually deleted.

Describe alternatives you've considered

There are some plugins developed by the community such as the sfdx-profiles-splitter and sfdx-metadata-splitter which represent the idea quite well, although applying these involves manual splitting and merging when retrieving and deploying respectively, I would like it to be part of the standard, or at least have the option to do it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions