Customization guidelines
To support your business requirements and processes, you can customize and extend the Medical Information Cloud product. All customizations and extensions must be implemented following the prescribed tools, technologies, and functionalities described on this page. If you have questions on how best to alter the standard behavior of Medical Information Cloud, visit How to Contact Customer Support.
Warning
Adhering to the guidance on this page ensures customizations and extensions remain functional and do not incur regressions as upgrades are shipped to the product over time. Failure to follow this guidance or altering the product’s behavior in a manner not explicitly defined on this page may result in the unexpected behaviors of stated features and functionalities, cause system errors, and prevent the ability to upgrade the product to newer versions.
For information on supported product integrations, visit Integrations.
Customize product components
To ensure custom features and functionalities remain functional and do not incur regressions as upgrades are shipped to the product, follow these guidelines:
Components not listed for access in Table 96, “Component customization matrix” may be removed from the product at any point in time without advanced notice.
If you want to alter the functionality of components that are NOT approved for access in Table 96, “Component customization matrix”, such as custom buttons, create a copy of the existing component and make the desired alterations to the copied component.
In general, do not reference Medical Information Cloud components in customizations. This includes referring to Medical Information Cloud components in custom code on or off the platform and in declarative configurations, such as a formula field. For a list of exceptions to this rule, visit Table 96, “Component customization matrix”.
Component identification
You can differentiate Medical Information Cloud product components from non-product components by looking at their API names. The API names for all Medical Information Cloud components have a mvn__
, mvn__MED_
, or MED_
prefix. In addition, many Medical Information Cloud components have a banner on their detail page, which states that the component is part of a package.
To verify if a component is part of the Medical Information Cloud product, check whether the component is part of a Medical Information Cloud required package. To view a list of components for a package:
In the Quick Find box in Setup, search for and select Installed Packages.
Click the Package Name of the installed package. Komodo Health and Nintex are the publishers for all Medical Information Cloud required packages.
Click View Components. A list of components that are part of the installed package appears.
To prevent the cessation of any custom features or functionalities upon product upgrade, only edit, delete, and reference Medical Information Cloud components explicitly named in these sections: Edit and delete components. Unless explicitly stated within a given component’s API name, label, description, or help text, any component whose API name is NOT prefixed with mvn__
, mvn__MED_
, or MED_
is free of product concern. You may alter or remove these components without impacting out-of-the-box product behavior.
Note
This guidance is specific to out-of-the-box product behavior. Before making changes to components not prefixed with mvn__
, mvn__MED_
, or MED_
, consult the parties responsible for implementing or altering Medical Information Cloud to prevent the cessation of any custom features or functionalities.
Edit and delete components
Table 96, “Component customization matrix” specifies the portions of the Medical Information Cloud product that you can modify.
Type - the type of component.
Editable - indicates if you may make alterations to the component: yes (✓), no (empty), or (✓*) yes but with exceptions.
Deletable - indicates if you may delete the component: yes (✓), no (empty), or (✓*) yes but with exceptions.
Referenceable - indicates if it can be directly referenced in customer custom configuration: yes (✓), no (empty), or (✓*) yes but with exceptions.
Permitted actions - specifies alterations to the component that are supported.
Notes and exceptions - specifies alterations to the component that are not supported.
Type | Editable | Deletable | Referenceable | Permitted actions | Notes and exceptions |
---|---|---|---|---|---|
Apex | ✓* | *Only the following items may be referenced:
| For the Apex classes listed under the Permitted actions column, you can only reference methods marked Examples: Example 1. OKAY to reference because it starts with the word "global"
Example 2. NOT okay to reference even though it is inside a whitelisted Apex class because it starts with "public", not "global":
| ||
Apex trigger |
| ||||
Apps | ✓ | ||||
Aura | ✓* | * Only the following items may be referenced:
|
| ||
Custom metadata types |
|
|
|
| |
Custom metadata type records | ✓ | ✓ |
| ||
Custom labels | ✓ |
|
| ||
Custom notification types | None | ||||
Custom objects | ✓ |
| |||
Custom permissions | ✓ |
| |||
Custom settings | ✓* | *Only reference the custom settings listed below:
|
| ||
Dashboards | ✓ | ✓ | ✓ | ||
Dynamic document packages (DDPs) | ✓ | ✓ | ✓ | ||
Email templates | ✓ | ✓ | ✓ | ||
Fields | ✓ | ✓ |
|
| |
Field sets | ✓ | ✓ | ✓ |
| |
Flows | ✓ |
| |||
List views | ✓ | ✓ | |||
Lightning message channels | None | ||||
Lightning record pages | ✓ | ✓ | ✓ |
| |
Lightning record page assignments | ✓ | ✓ | ✓ |
|
|
Lightning Web Components | ✓* | * Only the following items may be referenced:
| |||
Page layouts | ✓ | ✓ | ✓ |
| |
Process builders | ✓ | ✓ |
| ||
Permission sets | ✓ |
| |||
Permission set groups | ✓ | ✓ | ✓ | ||
Picklist value sets | ✓ |
|
| ||
Platform cache partition |
| ||||
Platform events | ✓ |
| |||
Profiles | ✓ | ✓ | ✓ | ||
Queues | ✓ | ✓ | ✓ | ||
Quick actions and custom buttons | ✓ |
|
| ||
Record types | ✓ | ✓ |
| ||
Report types | ✓ | ✓ | ✓ | ||
Reports | ✓ | ✓ | ✓ | ||
Roles | ✓ | ✓ | ✓ |
| |
Search layouts | ✓ | ✓ | ✓ |
| |
Sharing rules | ✓ | ✓ | ✓ |
| |
SObjects | ✓ | ✓ |
| ||
Static resources | ✓* | * Only the following items may be edited:
| |||
Tabs | ✓ | ||||
Validation rules | ✓ | ✓ | ✓ | ||
VisualForce components and pages | ✓* | * Only the following items may be referenced:
|
| ||
Workflows | ✓ |
|
Required picklist values
Table 97, “Required picklist values” lists values that exist within the product that may not be altered in any way.
Object / entity | Field name | Values | Notes |
---|---|---|---|
All | All | Do Not Delete | The value should be |
Case | QA Reason |
| |
Case | QA Status |
| |
Request Document | Delivery Option |
| While you cannot delete or edit any of these out-of-the-box values, you can add additional values. |
Product | Status |
|
Translation
Medical Information Cloud supports translation through the use of the Translation Workbench and custom labels. Package upgrades do not override translation configurations.
Translation Workbench
Translation Workbench is a standard Salesforce feature through which you can specify translation values for metadata and data labels, such as custom objects, fields, and picklist values. You may impart translation changes to any component supported within the Salesforce Translation Workbench, and based on the translated values in Translation Workbench, Medical Information Cloud displays metadata and data labels in a user's language.
Custom labels
Custom labels are a standard Salesforce feature through which you can specify translation values for all Medical Information Cloud text that is displayed in the user interface.
You can also associate a custom label to custom metadata types that have the Custom Label API Name field. For example, if you want the Draft
document state to be translated based on a user's language, you can create a custom label and add the custom label's name to the Custom Label API Name
field on the CM_Draft
document state record.
Keep these guidelines in mind when working with custom labels:
Never edit the base value. Only add language-specific translations.
Never reference Medical Information Cloud custom labels in custom code or formulas. Custom labels could be deleted at any time if they are not used anymore in the product. For a list of Medical Information Cloud custom labels, visit Content management custom labels and Inquiry management custom labels.
Unit test considerations
Automated unit tests are a core component of the Salesforce platform upon which Medical Information Cloud resides. Medical Information Cloud ships with hundreds of unit tests that serve an important role in maintaining the overall quality of Medical Information Cloud in addition to helping ensure regressions do not occur over time. Therefore, as Medical Information Cloud is customized within a customer instance, all tests must pass regularly to ensure the system is behaving as expected and able to receive ongoing product updates and enhancements.
For unit tests to continue functioning properly, the following must be true:
Note
This list is not an exhaustive list of requirements. Adding validation rules or required fields can still break unit tests in some situations. Be sure to run all unit tests in your org before deploying to make sure that any customizations have not broken the Medical Information Cloud unit tests.
There must be at least two Person account record types.
The user running unit tests should be a System Administrator with the Bypass Validations custom permission. By default, this is given to the System Administrator profile.
There must be at least two available countries not including ‘ZZ’. All values must be available to all record types of all objects where it is used, except ‘ZZ'.
There must be at least two available languages. All values must be available to all record types of all objects where it is used.
The document folder with the API name
MED_Dynamic_DDP_Documents
must exist.Restricted Picklists (Global Picklists or any picklist marked restricted) must have all values available to all record types.
When creating code or configurations that updates data or enforces restrictions (such as Validation Rules), add an exception to bypass the restriction or not update the data if the
MED_Test_Status__c.MED_Is_Running_Tests__c
and/or themvn __Mavens_Test_Status__c.mvn__Is_Running_Tests__c
custom setting is currentlytrue
. These fields are set totrue
when Medical Information Cloud unit tests are running (only in the testing context; it will never be set totrue
in production). This ensures that unit tests can pass reliably without restricting what business rules a customer implements.
To bypass Medical Information Cloud Content Management module system events in unit tests that you write, use the CM_CustomMetadataGlobalTestFactory
Apex utility class and the disableSystemEventService
method, which has no arguments. This class mocks the Medical Information Cloud Content Management system event service, so no system events are processed while your Apex unit tests run.