You are on page 1of 17

RAPIDRESPONSE SOLUTION DESIGN &

AUTHORING STANDARDS

Copyright © 2021. All Rights Reserved.


Table of Contents

1 - Introduction ............................................................................................................................................................................................ 2
Purpose of this Document ............................................................................................................................................................... 2
Document Layout ............................................................................................................................................................................ 2
2 - Standards................................................................................................................................................................................................ 3
Workbooks ..................................................................................................................................................................................... 3
Worksheets..................................................................................................................................................................................... 4
Worksheet Formatting .................................................................................................................................................................... 5
2.3.1 Hidden Worksheets ................................................................................................................................................................................... 5
2.3.2 Visible Worksheets .................................................................................................................................................................................... 9
Automatic Data Modification worksheets ...................................................................................................................................... 10
Query Expressions Formatting ....................................................................................................................................................... 11
Data Model Standards ................................................................................................................................................................... 14
Scenario Management .................................................................................................................................................................. 16

Document Revision History

Version Changes Author Date


1.0 Initial Version Paul Smithson, Pascal Schaedeli, Tulug Kenanoglu, Duncan Klett, 31-Mar-21
Steve McStravick, Vijay Subramanian, Anand Sundaresan, Ramesh Sundaresan

1
Copyright © 2021. All Rights Reserved.
1 - Introduction
Purpose of this Document
As our Rapid Response Author Community and User community has been growing rapidly, it is important to follow RapidResponse Standards
and Guidelines when developing the resources in RapidResponse.

By following the Standards and Best practices we gain the following benefits.

✓ Helps to build High Quality Resources


✓ Helps the Developers and other Consultants to easily understand workbook structure and complex worksheet designs
✓ Helps to maintain and debug the resources more easily
✓ Will save lot of valuable time and energy of Authors
✓ End User experience will be smooth, consistent, and appealing

If you have any comments/questions, please send an email to RR_SolStd_Contact@kinaxis.com

Document Layout
Information provided in this document relates to RapidResponse Solution Design Standard Practices.

Standards: Recommended best practices that Kinaxis is expecting every developer to follow when creating and modifying resources.

- Guidelines, Help Notes & Documentations sections will be added later

2
Copyright © 2021. All Rights Reserved.
2 - Standards
Workbooks

Workbook Naming - The naming of workbooks and worksheets should be “task” oriented, as opposed to referencing “what it
Conventions is.” The name should describe what you can achieve with the resource.
o Ex: "Maintenance" for workbooks that are used to maintain data in RapidResponse
o "Data Integrity" for workbooks that identify exceptions in input data
- Capitalize: Same as Title Capitalization Rule
- Please avoid Extra space between words, and any leading or trailing spaces
- In the workbooks and worksheets names use hyphens (-), avoid dashes (–) and underscores ( _ )
- For Customized PDRs or custom workbooks add a Period as Suffix (Ex: Expiry Rules.)
(Purpose of renaming the workbook is to prevent overwriting of updated version, this is current
recommendation, and this might change in the future). Also create a Resource Tag and add all the custom
resources to it. It will be easy for identification of the resources and when creating Resource packages.
Workbook Filtering Table In General tab, choose the right workbook base table in the List filters Compatible with table option.
General Rule:
Supply planning workbooks:
- Generally Part or Constraint (PartCustomer almost never makes sense as a “balance” per PartCustomer is not
meaningful -maybe one or several Customers have their demand and supply planning in a Pool, which still is
by Part).
Demand planning workbooks:
- PartCustomer - especially for Demand Management applications such as Forecast Disaggregation, S&OP
workbooks, etc..
- Part - when a demand planning view requires a supply planning focus, such as the Aggregate Supply Planning
application.
- Selecting right table is important because,
o The filter control will be applied to the workbook base table
o Using the filter control is required to display hierarchy columns
- Always choose an Input table as a workbook filtering table
Use of Hierarchies Enable Hierarchies
- It helps to filter the data by different dimensions (such as Part/Customer/Region..)
- Helps to select more than one item within a single Hierarchy

3
Copyright © 2021. All Rights Reserved.
Worksheets
General Points on the worksheet development.

General - As a rule, do not use QBE in authoring


- Remove unused hidden worksheets

Use of Tab Groups - Limit the number of Tab Groups to 2-3 for viewing data easily and for Debugging
- Organize the Source and Destination (Automation) worksheets into two different groups.
(Consider Source above Destination , with matching column width for easy review by Authors)
- Consider having the Summary worksheet at top and Detail worksheet in bottom pane
- If both Summary & Detail worksheets are crosstab, then enable Synchronized Scrolling option between them
Use of Blank worksheets - Use the Blank worksheet based on Numbers table (rather Site, or some other table)
- Optionally name the Blank worksheet to indicate purpose of the tab group (Example: Disaggregation...)
Enabling Hierarchy - It helps to show/hide columns dynamically
Columns - It has values mostly when seeing the levels below the user selected level
- Use only if required, and generally restricted to demand planning workbooks or use cases
- Enabling this feature automatically disables the Multi-Select functionality
- Consider however that displaying hierarchy columns adds a performance overhead, as well as the limitation
that the filter controls must be used (might conflict with SELPart or SELPartCustomer worksheets).

4
Copyright © 2021. All Rights Reserved.
Worksheet Formatting

2.3.1 Hidden Worksheets


Worksheet Naming - Provide meaningful name, not too specific.
Conventions - Name the worksheet based on its role, rather ‘Data in the worksheet’
- Use Hyphens -, not Dash, colon ‘:’, parenthesis.
- Keep ID in Sync with Worksheet Name
- Use the following naming conventions for Worksheets

Prefix Explanation
SRC: Use SRC for Worksheets used by Data Modification commands (previously GET:). Sheets
based on RapidResponse tables no longer need a SRC prefix. Better to name these sheets
according to its table and/or purpose. Except for the prefix, keep the name exactly the same
as the corresponding INS or UPD worksheet.
LKP: Lookup - A worksheet that provides indexed data that other worksheets can lookup*
SEL: Selected - A worksheet used with IN clauses from other worksheets*
INS: Insert - A worksheet that performs an Insert data modification operation
UPD: Update - A worksheet that performs an Update data modification operation
MOD: Modify - A worksheet that performs a Modify data modification operation
DEL: Delete - A worksheet that performs a Delete data modification operation
SPRD: Spread - A worksheet that disaggregates or spreads data across records in a specified manner
MS: MS - Multi Scenario worksheet
Note – Composite , Cached & Transformation Function worksheets can be identified by its Icon. So, they are not
included here.
* Enable 'Use Reference for Keys' always when creating worksheets for LOOKUP and SELECT worksheets.
Worksheet Numbering Give Numbers to the worksheets, it will be helpful for
- Sorting of Worksheets by its function
- Easy to Identify when adding to a Composite Worksheet
- Easy to alter the worksheet numbers without changing Worksheet IDs
- In Dependency or Usage, we can easily see the worksheets sorted by numbers

5
Copyright © 2021. All Rights Reserved.
- Optionally, group the Numbers to its corresponding to Data Update Command numbers
Use of SELECT Worksheet - Create a SELECT worksheet on the workbook base table, used in IN expression by other worksheets to avoid
duplicating filtering business logic that would then have to be changed (often in non-obvious ways).
o For example, SEL: PartCustomer for a workbook based on PartCustomer,
o SEL: Part for a workbook based on Part,
o SEL: Constraint for a workbook based on Constraint
- Create derived SEL: * worksheets to create sets of other objects, for example:
o SEL: Part as a composite on SEL: PartCustomer, grouped by Part (Reference)
o SEL: Constraint as table-based worksheets on SourceConstraint where
SourceConstraint.PartSource.Part IN SELPart!, grouped by Constraint (Reference)
- SEL: * worksheet shall always have their first column as a Reference (of Part, PartCustomer, Constraint..), use
SELF in the Column Expressions. Suggested naming of that first column: Ref (this way, in a composite, the
expression becomes SELPart!Ref, and its Type field-for example- can be accessed by SELPart!Ref.Type)
Use as Reference As a rule, hidden worksheets should not dereference objects into scalars, and instead use the highest relevant level
of reference. For example, a hidden worksheet based on HistoricalDemandActual will probably have a Part
reference column. It could however have a PartCustomer reference column instead if that detail was relevant
(mostly determined by the “worksheet primary key” requirements, defined by the grouping). In rarer cases, it
could have a HistoricalDemandHeader column instead. However, if none of these levels are relevant to the use of
the HistoricalDemandActual records, having no reference and just using the Date column as the primary key.

6
Copyright © 2021. All Rights Reserved.
Select Use as reference while performing,
- LOOKUP
- Merging the worksheets for Composites worksheets (Joins & Unions)
- IN Operator expressions
- As much as possible for all but user-visible sheets or at/above multi-scenario sheets (where references are not
permitted).
Use of Variables When creating the worksheet Expressions, centralize business logic and configuration by using Profile Variables
and Workbook Variables. Also consider function and calculated fields. Avoid Macros.
- These are useful features, particularly when using flexible values such as OrderTypes, Dates and Warning
Thresholds..etc
- It will be much easier to modify later rather than having to go in and change it in multiple locations where it
has been hard coded. Example: Order.Type IN LISTASSET($SupplyOrders)
- Sort the variables by Name in Ascending Order in the Variables tab
- Keep the Hidden Variables last in the Variables tab
- Format the All options like = ALL = in the Display Value of List variables (not ALL, All, -All- )
Creating Composites - Join by ‘Group By’ columns: First preference when each of the components are grouped. creating composite
worksheets worksheets is by joining the records based on Group By Columns, because Grouped Worksheet have Unique
Keys (the BY Columns)
- Join by specifying Number of columns: when the each of the components are Not grouped. If the above
method provides different dimension/result in the composites, or if it alters the purpose of building the
composites, then use Join by Number of Columns option
- Join by specifying Number of Columns option is exclusively created for Cross Product Joins
LOOKUP Rule of thumb: LOOKUP summary information and JOIN detailed information.
- Almost all use cases for using the Lookup function are replaceable by a Join, which is almost always of higher
performance and easier maintainability. The LOOKUP command should be used when a composite worksheet
cannot be easily created to join the data and when the data model does not support direct access to the data.
- For searching small sets of data, perhaps less than 2 dozen records, a SET operator can be faster and more
obvious than Lookup. (Ex: on the Solution namespace)
- If doing a LOOKUP into an input table, and you are searching for the Keys, then use the “direct table LOOKUP”
option to return a reference to the matching record – Don’t build a ‘Lookup’ sheet for these cases, as this
simply takes up memory by storing a copy of the data in secondary location.
- If all you need is to know is whether a record exists or not, use IN instead of LOOKUP (the direct table
expression is also optimized for IN). Ensure the IN-Clause worksheet is grouped.
- If you are doing similar lookups into the same sheet, try to do one lookup to find the record as a Reference,
then re-use that Reference in subsequent expressions. This avoids running the same LOOKUP many times.
7
Copyright © 2021. All Rights Reserved.
- NEVER use a structure such as “If (LOOKUP(…), LOOKUP(…), else expression)”. Use the Default setting in the
LOOKUP command for the “not found” case.
- Avoid concatenating Multiple Keys in the ‘Value Expression’ of LOOKUP, have them separated by comma. Use
LOOKUP({Part,Site,Line},…) this way, but not like this LOOKUP(Part+Site+Line, …)
LIKE Operator - Avoid LIKE operator wherever possible because it searches all the records for matching strings.
- Instead use,
o IN for an enumerable property. Example: Part.Type.ProcessingRule IN(‘MPS’, ‘MPSConfig’) rather
than Part.TypeProcessingRule Like ‘MPS*’
o Otherwise a substring function such as Left(), Right(), etc.
Example: LEFT(Part.Type.ProcessingRule,3) = ‘MPS’
Filtering Tab - Filter the worksheet on Keys of INPUT tables, the owner of CALCULATED tables.
- Filter out data as early as possible
- Filtering Control – Select only Appropriate ones, remove Model & Pool if not used.
Custom Sorting - Avoid Custom Sorting– This changes the order of columns of how RapidResponse sees the worksheet -
including for joining-, making understanding and change significantly more challenging for no added value.
- By Default, the worksheets are sorted by first few columns, use it most of the time. Only use the custom sort
in exception cases, and only in visible worksheets (worksheets that are not component of a composite)
Group - Group only with a purpose
o In general, changing the primary key of the result set
o Also, necessary to use in IN expression
- Bucket Setting: Bucket late in the composite tree (maybe delay all the way to the user visible worksheet),
unless there is a guarantee that most buckets have data (otherwise many 0 records are created, in memory,
and requiring processing across the composite tree)
Performance Max # seconds for worksheet to run = 30
Measurement Check - Measure with consecutive openings when unit testing
- Timing the first open of the worksheet should not exceed the 30 second max. After measuring the time to
open and then closing the workbook, reopen it and measure the time again. This second opening should be
equal or less than the initial opening.
- If the worksheet uses analytics which are cached then the time should be significantly less. If the worksheet
does not meet the performance criteria, the developer must look for alternative designs.
More on Worksheet - Use the simplest analytics (or none) for the business problem →(fast to slow) Input data, Netting, CTP, FLP
Performance - Use drilling to focus expensive calculations on a smaller set of data
- Test and use the “worksheet performance” watching the cached and un-cached times and LOD counts.
- In the Filtering → Filtering Control, use correct ‘Owning Reference’ field for the Calculated tables

8
Copyright © 2021. All Rights Reserved.
2.3.2 Visible Worksheets
General - Never use as a component: visible, i.e. user, worksheets should be easily modifiable without impacting a
downstream composite tree.
- Recommendation: except for simple table-based worksheets, create a “base” hidden worksheet (with
reference-based columns) on which both the rest of the composite tree and the visible worksheet are based
on (with possibly additional calculations if their result is not required elsewhere in the composite tree).
Worksheet Display - Use Hide Duplicates for the Leading columns (especially grouped columns)
Formatting - Use Hide zero values, except when a 0 is significant, such as a Balance field
- Booleans columns – Use Tick marks in Editable Booleans (including in the Column Header). For the display
columns use Yes, and for the ‘NO’ condition use the conditional formatting and hide No values.
- Negative values should display in bold, red text.
- Editable rows in crosstabs should have a light-yellow background.
- Format Historical data with a Gray background.
- Consider using Freeze Columns at the end of the group by columns to improve scrolling usability
- Avoid using Currency Symbols in Column Labels/Worksheet Labels
- When reporting Data Integrity issues, use a background color of yellow for integrity “flag” columns, and
highlight using red, bold font.

Field Usage - Always use Site after Items it applies/refers to → Part.Site, Constraint.Site, Order.Site
- Have columns this way; Part.Name|Part.Site|Part.Description → if Description is before Site then it will pop
up the missing site reference message when navigating through Part Hyperlink.
- When using Customer ID/Supplier ID, add Customer Description, Supplier Description next to it
- Use of MRPDate → When reporting part detailed information, use Part.PlanningCalendars.RunDate.FirstDate
and use MRPDate when bucketing data from several parts.
- Number:Line → Use when reporting order details in IndependentDemand, ScheduledReceipts, PlannedOrders
- If you need the Supplier in a ScheduledReceipt-based workbook it is best to get it through the SupplyOrder,
not the associated PartSource because PartSource linkage could be misleading.

9
Copyright © 2021. All Rights Reserved.
Automatic Data Modification worksheets
General - Structure the Data change commands in Efficient Manner. It is important to configure and review data change
activities to optimize performance and reduce data churn in the system.
- If only inserting data, the Insert Data option is the most efficient option.
- If only existing records are being changed, the Modify Data option is the most efficient option.
- When Updating or Modifying data, filter down to the records that are needed to change.
- Use references in every case where they are available (except for cross-scenario updates).
- Do not delete and re-insert large sets of records
Filtering in Data - Modify - Be sure to filter for just the records that need to be Modified
Modifications worksheets - Delete - Be sure to filter for just the records that need to be Deleted
- Insert – When inserting records, do a check to ensure the new record doesn’t already exist. Filter using a
Directed Lookup or Directed In statement to table.
- Update – The Update function requires the query engine to run both the source and destination queries to
match records and determine what needs to be done. To achieve optimal performance, be sure that each
worksheet is being filtered to only the records that need to be modified
Automatically create - Avoid using this option, Data automations should explicitly create all references. So always create separate
reference records Source and Destination worksheets for Header tables.
- If Enabled, then Implement a periodic cleanup to remove records that are no longer needed
Error Tolerance - Use with caution when Enabling this – it’s like net-change where errors can accumulate. If it is allowed,
monitor for failures, and have a process ready which can fix any build-up of errors
Better to use filter NOT {Key Values} IN TableName{KeyValues}
On Save Command - Avoid running a command on every edit or open as it may cause a lot of unnecessary processing
- Avoid running ‘On Save command’ if the scenario shared
- Use this option only if it is necessary
Worksheet Command - Provide clear and short name for Command
Name & Descriptions - Provide clear description explaining purpose of the command and list of actions will be performed
Cross-Scenario Update - If the command is set to Cross-Scenario update, then provide clear indication in the name of the command
- Do not include references when setting up the Cross-scenario update commands (references don’t work with
Cross Scenario Update)
Validation - Run the command more than once to ensure that there is no modification happening after the first run
- Ensure the command Running time is in Expected Range
- Ensure number of operations performed are in Expected Range

10
Copyright © 2021. All Rights Reserved.
Query Expressions Formatting
Query Expressions
Example Usages Recommended Not Recommended
If (AvailableDate > DueDate, True, False) ? AvailableDate > DueDate True False
WHY? Easier to read, could lead to ambiguous expressions
Use Booleans (True/False) rather than $StringYes/$StringNo
MAX (0, TotalNettableOnHand – TotalDemand) IF (TotalNettableOnHand > TotalDemand,
WHY? Easier to read and more efficient expression TotalNettableOnHand – TotalDemand, 0)
NOT $UseABC !$UseABC
WHY? Easier to read, also ! is used in workbook!worksheet
identification
DueDate + 0 ‘Week’ DueDate + 0 Week
WHY? Consistency. Calendar names could include spaces.
Notation without quotes will be deprecated.
ScheduledReceipt[Order + ‘:’ + Line] ScheduledReceipt.Order + ‘:’ +
WHY? Easier to read ScheduledReceipt.Line
‘MPS:’ + Text(DueDate, ‘YYYYMMDD’) + PartSource.Basekey ‘MPS:’ + Text(DueDate) + PartSource.Basekey
WHY? Be explicit to ensure consistency
SupplyType.ProcessingRule <> ‘Ignore’ SupplyType.Value <> ‘Ignore’
WHY? because user defined Values could be different.
First preference is filtering based on Processing Rules, unless
there is a reason to filter based on Type (user/data values)
Also consider adding Comments to complex expressions to make them simpler to understand, but not inside an
expression
Capitalize Function Always Capitalize Function Names
Names - Logical operators: IF, AND, OR, NOT, IN, LIKE, ISNULL
- Set operators: SUM, COUNT, MIN, MAX, AVERAGE, ASSOCIATEMIN, ASSOCIATEMAX, AVERAGE, CONCATENATE,
HAS, OF
- Reference operators: NULL, SELF, RECORDID, ROWINDEX
- Date constants: FUTURE, PAST, UNDEFINED, TODAY, NOW, MRPDATE
- Logical constants: TRUE, FALSE
- Keywords that are used in the LOOKUP() function: EXACT, EARLIER, LATER

11
Copyright © 2021. All Rights Reserved.
Using IN Operator - IN Operator can be used with any Data Type. Ex; Quantity IN (125, 250), Name IN (‘abc’, ‘def’)

- Avoid using direct table expression with IN Operator like this


{Part.Name} IN IndependentDemand[Order.Type = 'Shipments']{Part.Name}
because this Query will regenerate the query on Table for EVERY RECORD.
- Instead create a worksheet to filter list of Parts that has Shipment type and filter using IN operator
(field1) IN (worksheetId!)

Capitalizing First Letter ScheduledReceipt.OriginalDueDate


(Pascal Case) - This is recommended when creating Custom Data Model Fields, Query Expressions and Column IDs
Additional White Space NUMERICVALUE(text, errorValue, separator)
- No Extra space after the Function name à NUMERICVALUE(text, errorValue, separator)
- Provide Single space after the comma → NUMERICVALUE(text, errorValue, separator)

Example:
IF(UnitSellingPricex>x0, UnitSellingPricex*xQuantity, Part.AverageSellingPrice *
Quantity) >xMONEYVALUE(10000)
- No Space after Opening or Before Closing Parenthesis or Bracket
- Add single Space before/after Arithmetic or Comparison Operators
- No Space before Comma, One Space after Comma
Query Expression – - Keep the Logical Operators (AND/OR) at the Beginning of a New Line
Put Logical Operators at Example1:
the beginning of a New Part IN SelectedPart!
Line AND BaseKey = Part.PrimaryPartSource.BaseKey
AND Source.Id = Part.PrimaryPartSource.Source.Id
AND Source.Supplier.Id = Part.PrimaryPartSource.Source.Supplier.Id

Example2:

12
Copyright © 2021. All Rights Reserved.
Query Expression – - Do not type one long expression and let the editor wrap it. It is very difficult to understand what such
Line Wrapping and expression does. Instead, insert line breaks keeping the maximum line length at 85 characters.
Indentation

Query Expression – - Place '+' or '-' at the beginning of a line. The expression reads like a sentence. Add/subtract is very often chained
Placing of Operators and several values are used in the expression
- Place '*' or '/' at the end of the line or on a separate line. These operators are almost never chained.
- Place comparison operators like '>' or '=' at the end of the line

- When wrapping a line at a comparison operator, leave it at the end of a line.

13
Copyright © 2021. All Rights Reserved.
Data Model Standards
• Use Reference fields vs. String fields.
o When adding a new sting field, it is usually best to create a new table and use the string as reference. If the string is truly
“random”, then String is appropriate. However, if the string is expected to be one from a list, then use a Reference to an
Enumerated list.
o For Example, to add a priority code on IndependentDemand records for various reporting needs, add a new table, ActionLevel,
that will have a couple of fields (Level, as a key, Description). Then, add a new field on IndependentDemand table as a
Reference to ActionLevel. This will be helpful when finding orders that require action would allow the query engine to go
through the smaller subset of IndependentDemand records that have the ActionLevel <> ‘’
o Using Reference fields is part of Input data Validation, which ensures avoiding possible typos when using String fields
o Use Hierarchical Data Model Structure to ensure Data integrity (table1 with reference to table2 with reference to table3 rather
than table1 with references to both table2 and table3 or string fields in the Table1 itself), here is an example.

o
o When to use string field rather than a reference:
▪ A description field: Part.Description, Supplier.Name, Location.Name, etc.
▪ A key field: Part.Name, Supplier.Id, PartType.Value
- How many levels of Hierarchy to be included? → Consider if any change in future to the references, this has implications on Historical
data

14
Copyright © 2021. All Rights Reserved.
• Normalize the database.
o No more than one base type (String, Date (sometimes more than one key date makes sense), Quantity) as key field; the rest
should access through references.
• Avoid mapping Key fields to dynamic concepts (e.g. Order DueDate, Extract timestamp, etc)
• Master data (Part, PartSource, Site, Constraint, Workcenter, Control Tables etc) should seldom churn
o Don’t create a data model that will force high level of churn due to data modifications (e.g. adding String fields to Site table)
o Better to have a table referencing the master data with the additional, optional, information.
• If you are creating new records you should try to use repeatable record key fields (the fields that uniquely identify a record). This will
prevent accidental attempts to add records with the same keys. It also makes it less likely you will need to delete and re-add records,
which you should avoid.
• Hierarchies → Use Reference fields when creating Hierarchies, avoid expressions in the definition (Example: Part.Name + ‘-‘ +
Part.Description), Instead use Custom Calculated fields.
o Consider using ReferencePart rather than Part as the lowest Part-based hierarchy level
• Enable keys for OnHand, BillOfMaterial tables to avoid record duplications
• Maintain accurate Calendar Data. Use Data Modification worksheet for updating MRPDate and extending Calendar Dates, if not
receiving from ERP
• When creating Vector tables, ensure that vector with Owning references should not have more than 100 magnitude of references.
• Use Custom Calculated fields if the expressions and need to be used multiple places
• Ensure naming the Custom Data Model Namespaces to group the related tables together by applications by Project Phase (such as
DP_Phase1::, DP_Phase2::) and consider how the namespaces are likely to be migrated in the project landscape.

Checklist:

✓ Define the Custom Namespaces and Dependency correctly


✓ Avoid having frequently changing fields in the Tables with many records
✓ Add the Description for Custom table and fields
✓ Table and Field Names in Camel Cases (Ex: ProductionLine)
✓ Give Sensible String Key Field names (ID, Value, Name)
✓ Name of the Key field should not be name of the table. (Ex: Part.Name not Part.Part, Site.Customer::Type not Site.Customer::SiteType)
✓ Field Names should imply type of Data (Ex: AdjustedQty, CommitDate, TargetCost, BulkFlag..)
✓ Use Singular Names (Ex: ProductionLine not ProductionLines), and avoid Underscores (Ex: Production_Line)
✓ Validate the Data Model (Ensure customizations are added in the Right table/field with right Data type)

15
Copyright © 2021. All Rights Reserved.
Scenario Management
Recommended Not Recommended
- Permanent scenarios for editing by small groups of users. Also, permanent - Having all users editing in the same scenario
scenarios for VIEWING by many users. - Having Auto refresh enabled for Performance
- Sync with corporate level only on a frequency that is required intensive Workbooks where multiple users
- Audit changes before committing submit their query
- Consider preventing commits and instead using a cross-scenario data - Allowing editing on shared scenarios
command to insert, update, modify and delete only valid changes (requires a
strategy to refresh the base scenario with commit privileges regularly to
cleanse invalid commits)
- Individuals create their own scenario and do their own validation before
committing it
- Monitor for stale scenarios (they can lock old versions of records into
memory)
- Please avoid Extra spaces between words in scenario names, and any leading
or trailing spaces (Scenarios can be migrated through IPKs, this will ensure
same name and scenario structure across environments)
- Create scenarios like Control Parameters for maintaining ControlSets
- Using Perspectives - Applying Perspectives to fields on tables with
- Perspectives should only be defined on Control Tables or tables with a limited many records. A Perspective applied to a table in
number of records(<100) ANY scenario can hurt performance of queries on
that table in EVERY other scenario.

16
Copyright © 2021. All Rights Reserved.

You might also like