Wrap Version Control
Note: This page has been replaced by an updated and extended help page for WrapCreator at https://help.excelwraps.com/support/online-help/help-making-changes-to-your-wraps/
Making Changes to Your Wrap
ExcelWraps allows you to make changes very easily. Simply make the required changes to the source Excel file and rewrap. As all wrap instance data is stored in the database using the Excel cell name we need to proceed with caution to ensure that old instances can be loaded by the new version of the wrap.
- It is essential that input cell names are never changed as values stored in the database needs to find its place in the wrap.
- Calculated cells may be renamed. Reloading an existing wrap instance will update all the names in the database.
- Formulas in calculated cells may be changed. Reloading an existing wrap instance will update all the values in the database.
- New input cells can be introduced, they must be named and may contain a default value. Reloading an existing wrap instance will insert the default values in the database.
- New calculated cells can be introduced. Reloading an existing wrap instance will update all the names an calculated values in the database.
- You will compromise signature integrity of existing wrap instances. If the signature date is older than the wrap definition someone must have signed before the wrap was updated. We show this by prefixing the signature with an apostrophe (').
- You may break the enabling logic for signatures. If the signature date is older than the wrap definition someone must have signed before the wrap was updated and the new signature enabling logic disables the signature box. This is shown by a red outline around the signature.
Terminology
Before moving further let's make sure we all understand what we are talking about:
- A wrap is more accurately referred to as a wrap definition (it defines what is in the web app including cell names and the calculation method). Each wrap definition has an installation date.
- Each time a wrap is used to and submitted to the database it creates a new wrap instance identified by its unique key combination. Each wrap instance has its own lastmodified date. A wrap instance contains a collection of cell names each with an associated cell value. This collection is held in the database.
- Reload a wrap instance. Read data from the database and insert into a wrap definition to see the information in a browser.
- Recalculate Instances is a special procedure to update the database values by recalculating in accordance with an updated version of the wrap definition.
Recalculate Instances
From Wrap Instance view in the site dashboard you may select the action 'Recalculate all Marked Instances' to bring all existing instances up to date with the latest version of the wrap. Please note that a lock is placed on the wrap whilst Recalculate Instances is running and this will prevent any users from using the wrap. After Recalculate Instances has finished successfully the Wrap is unlocked and available for use again. For this reason Recalculate Instances is best run out of normal hours to prevent disruption.
Please note the following principles regarding the recalculate instances (recalc) process:
- A wrap instance is marked for recalculation when the wrap definition installation date is greater than the wrap instance lastmodified date.
- During import the Recalculate instances feature may be switched off by selecting the 'Unmark for Recalculate instances' check box. This changes the lastmodified date of all instances to equal the wrap definition installation date thus removing the mark for recalculation.
- In the wrap instances listing individual wrap instances may be selected and marked for recalculation.
- In the Wrap instance listing view the action 'Recalculation all marked instances.' is available if one or more wrap instances have been marked for recalculation.
Import Option | Mark for Recalculation Action | Action | |
---|---|---|---|
Recalc all Instances | None (thus all marked for recalculation) | not required | Recalculate all marked instances |
Recalc Live Instances | Unmark for Recalc | Select all with 'Live' filter active then 'Mark selected instances for Recalculation' | Recalculate all marked instances |
Recalc Selected Instances | Unmark for Recalc | 'Mark selected instances for Recalculation' | Recalculate all marked instances |
Table to show common recalculation procedures when updating a wrap definition.
Live and Frozen Wrap Instance Behaviour
State: | Live | Frozen | Live | Frozen |
---|---|---|---|---|
Action: | Load | Load | Recalc | Recalc |
WrapLink Update | Y | N | Y | Y |
Use latest wrap definition | Y | Y | Y | Y |
Save updated values to Database | Y | N | Y | Y |
Table to show behaviour of live and frozen wrap when loaded and when subject to Recalulate Instances (recalc).
The latest version of the wrap definition is used an both cases and old version of the wrap definition are not retained. The load and recalc behaviour of 'Live' wrap instances is the same and we can be relatively more relaxed about changes to 'Live' data. However notice that the 'load' behaviour and 'recalc' behaviour of 'Frozen' wraps is very different with respect to wraplink behaviour and values stored in the database. When loading a 'Frozen' wrap instance wraplinks do not update and stored values in the database are never updated. When recalculating instances of a frozen wrap wraplinks are updated as are values stored in the database. Users need to understand that recalculating instances is more powerful (and therefore more dangerous) than simply loading a wrap. Use can be more relaxed about 'Live' instances but should use 'Recalculate Instances' on 'Frozen' instances with caution and be fully aware of the impact any changes will make.
Wrap load behaviour is aimed making as few changes as possible to the wrap instance making a best attempt to preserve signature integrity (remember calculated values will change on screen in line with the new wrap definition but these changes are not committed to the data values stored in the database).
Wrap recalculation allows you to make changes to values stored in the database and is aimed at bringing old data in line with a new calculation method.
Signature Integrity Issues
What happens to signatures collected on a previous version of the wrap and how do we overcome the dilemma that the old version of the wrap was signed and not the latest one? There are two ways to handle this:
1) Change Wrap Name to Maintain Signature Integrity: Some people who place great emphasis on signature integrity would always select this approach and avoid complications from Recalculating instances ever arising altogether. Simply change the source Excel file name, make your changes and create a new wrap with the new name to take over from the previous version. MyWraps reports allow wrap appending so that data from many versions of the wrap can be seen in the same table/chart.
2) Keep Wrap Name but Compromise Signature Integrity: Some people place a great emphasis on reusing existing data and updating as the wrap calculation evolves. This is particularly true when wraps are first being developed and it allows you to get started immediately with a 'quick and dirty' approach and evolve over time to a slick and elegant approach. To achieve this keep the same source Excel File name, make the changes in Excel and install the new version of the wrap over the old. Administrators use the 'Recalculate Instances' button to bring all existing instances up to date with the new Wrap calculation. The wrap name has not changed and all the instances made with the previous version can be read by the new version and you continue to use MyWraps reports to view the results of all instances. However, signatures made on a previous version of the wrap may have been signed with possibly different calculated values or the appearance of the wrap may have changed. We would recommend keeping a change log so that the implications of the change over time can be assessed.
This presents us with a signature integrity issue. Any signatures older than the current wrap installation date will be prefixed by an ' character to signify the signature integrity issue. If the XLW SIGNOFF enabling cell logic also has changed you may find SIGNOFF cells signed but not enabled (which presents an interesting conundrum). Generally we recommend this approach but ask users to be mindful of the consequences of the signature integrity issue. It is a good idea to maintain a version history of the wrap to fully understand any signature integrity issues. A version history control can be created by another wrap in which the relevant roles sign to accept the change introduced thereby maintaining signature integrity.
is a sample valid signature.
is a sample of a signature made before the latest version of the wrap is installed.
is a sample of a signature made before the latest version of the wrap is installed and it does not satisfy the new enabling cell logic. Please note that it is always possible to use Excel logic to ensure that both old instances and new instances always satisfy the cell enabling logic. Step 1 - Introduce a Holder Cell containing the Wrap Instance creation date. Step 2 - use an Excel If() function to change the enabling logic based upon the wrap instance creation date.
Redefine Cell Formulas to Update Wraps
Imagine if you labour rate changes after a particular date. In a wrap you may update the calculation method using an Excel IF() formula. In these circumstances you would install the wrap selecting the 'Unmark for Recalculate instances' check box. From the wrap instances listing select only those wrap which will be effected by the change and recalculate only them (as these are the only wraps that will change). If these controls were not in place and there were many many thousands of wrap instances recalculating all the instances would be very time consuming and in fact unnecessary. This approach should only be undertaken with care.
Changing Input Cells to WrapLinkLists
Any input cell (including any with data validation drop down selections) can become wraplinklists in new versions of the wrap. Data collected in the 'old' input cells will be displayed in the WrapLinkList in the new version of the wrap. If the data held in the WrapLinkList is not available in the WrapLinkList's dropdown selector then it will be highlighted with a red border.