Epicor CPQ comes with 3 built-in environments to manage deployments of your code:
- dev - The dev environment is where all of your development occurs. This is where you build rules, configurators, define workflows, etc. You can also run tests in the dev environment. Be aware that all changes to admin settings are immediately applied in the dev environment.
- test - The test environment is for testing deployments you plan to make to your users. Typically a company will have designated testers; super-users that are not doing development, but will test your new developments before they are released to your end users.
- prod - The production environment. This is the environment your end users (like salespeople, engineers, and customers) will use.
Each environment has its own base url, following this convention:
- dev environment - https://[companySubdomain]-dev.kbmax.com
- test environment - https://[companySubdomain]-test.kbmax.com
- prod environment - https://[companySubdomain].kbmax.com
where '[companySubdomain]' should be replaced with your unique company subdomain. For example, if your company subdomain is 'acme', then the url to the test environment will be https://acme-test.kbmax.com.
Behaviors and Data
Epicor CPQ object types are classified as either Behaviors or Data. Behaviors are deployed between the environments, whereas Data is not. Data always stays in the environment where it was created. Below is a list of how the object types are classified:
Behaviors (Deployed)
- 3D Scenes
- Build Types
- Categories
- Channels
- Company Currencies
- Custom Actions (for workflows)
- Email / Notification Templates
- Generators
(the generator itself, not the current position of the generator. Learn more .) - Global Definitions
- Layouts
- Notification Settings
- Product Rules
- Products & Configurators
- Product Categories (products being applied to a category)
- Product Images (images being added to a product)
- Product References (referenced configurator types added to a configurator)
- Queues
- Quote Outputs
- Roles
- Permission Roles (a role being applied to a permission)
- Safe Functions
- Settings
- Tables
- Tags
- Themes
- Workflows
- Workflow Selector Rules
Data (Not Deployed)
- Customers
- Contacts
- Test Builds
- Comments
- Jobs
- Logs
- Notifications
- Output Builders & Output Builder Settings
- Integration Settings
- Quotes
- Configured Products
- Configured Product Attachments/Files
- Quote Attachments/Files
- Configured Products
- Saved Searches
- Users
Partial Deployments
Understanding Deployment Options
You can create a deployment from the admin menu by navigating to Infrastructure > Deploy. You will be shown a form to complete to start a new deployment as well as a list of past deployments.
Here is an explanation of the options for creating a new deployment:
From Environment | This is the source environment that you want to deploy from. |
To Environment | The target environment that you want to deploy to. Note that deployments are only allowed in one direction. So the possibilities are to deploy from dev to test, dev to prod, or test to prod. |
Name | Give your deployment a name. Many companies utilize their own numeric versioning system that they populate the name with. |
Deploy all changes |
Note: you would rarely want to deploy all changes from one environment to the next. Consider this option carefully before continuing. |
Usually, you will perform a partial deployment, where only certain changes you select are deployed. When starting a partial deployment, you will be presented with a list comparing all the behaviors in both source and destination environments.
An overview of the partial deployment UI is shown below.
List of all behaviors
A list of all behaviors found in both the source and target environments. The columns in the list give you more information about each behavior itself:
Dependencies & References
Dependencies
References
The Diff viewer
Errors and Warnings
- Deploy checkbox - Set the checkbox for any item to true to deploy it, or false to not deploy it.
- Type - The type of the object.
- Name - The name of the object.
- Id - The unique ID of the object.
- Difference - describes the change that has been made to the object between source and target environments. Possible values are: Changed, Added, or Removed.
- Modified On - the last date that the object was modified.
- Modified By - the user that last modified the object.
Some objects in the list will have a '+' button next to them, which you can expand to see dependencies and references of the object.
Dependencies are items that are not deployable on their own, but rather are completely dependent on another item (or items). These dependencies will show up as children of the object it is dependent on. They will not have their own deploy checkbox because they are completely dependent. They will have an icon that specifies whether the item will currently get deployed or not.
= will be deployed
= will not be deployed
By selecting one of these dependencies in the list, the bottom pane will show the items that it depends on, whether those items are currently set to deploy, and also an explanation as to why this item is or is not getting deployed. For example:
Also in the list of children will be other objects referenced by the parent object. Usually this is a snap rule reference, like the rules of a configurator referencing a specific table for example. But some references are not based on snap. Like an option filter referencing a table, or an output referencing a template file.
References are shown in the list with the puzzle piece icon. Referenced items also exist at the top level of the changes list because they are deployable. This is also why they have a deploy checkbox. Note that Epicor CPQ will only show you references of objects that have also changed. For example, if a configurator references a table, and the table has not changed since the last deployment, it will not be shown in this list as there is no need to deploy it.
When you select a row in the changes list by clicking on it, you will be presented with a viewer on the bottom pane that shows you the exact differences in this object between the environments. The diffs are presented in json format.
Epicor CPQ will provide errors and warnings depending on what you have chosen to deploy. It examines the chain of dependencies between the objects and provides solutions to the potential problems you might face after your deployment.
- If there are errors in your deployment, it will not allow you to continue before fixing them.
- If there are warnings, these are recommendations and are not enforced. You may still deploy with warnings, if your situation warrants, but it is unusual.