Administrative versus development changes in production
Key Takeaway
Administrative tasks, which manage existing configuration or user access, are fine to do directly in production. Development tasks, which change or build an app, belong in a sandbox or scratch org first, even when you build them in Setup without writing code.
The production org is your live org, where your users and customers depend on the system. Changes made there fall into two groups: administrative tasks and development tasks. Administrative tasks are fine to do directly in production. Development tasks belong in a sandbox or scratch org first, because even small edits can break processes or alter data in ways you cannot undo.
Administrative tasks and development tasks
Whether a change is an administrative task or a development task depends on what the change does.
| What they do | Examples | |
|---|---|---|
| Administrative tasks | Manage existing configuration or user access, instead of changing or building apps | Developing email templates; creating or editing users; creating or editing permission sets and profiles |
| Development tasks | Change an existing app or create a new one | Adding a field to an object; adding a tab to an app; moving a field around |
Administrative tasks are common, and they are acceptable to do directly in production. You should do development tasks outside production. Best practice is to make and test them in a dedicated development environment, such as a sandbox or scratch org, and then deploy them. The work you do directly in production should stay limited to administrative tasks.
A change counts as development whether it is declarative or programmatic. So building something in Setup without writing code is still a development task if it changes or builds an app.
You must make some changes in a development environment to protect production. Writing Apex code is one example.
For example, imagine a new employee joins the marketing team. Creating a user for them is an administrative task, and so is creating a permission set for their role. You can do both directly in production. Now imagine the marketing team also asks for a new tab in their app. Adding a tab to an app is a development task, even though you can do it in Setup without code. So you add the tab in a sandbox or scratch org, test it there, and then deploy it to production.