ad1279 "marty, you're not thinking fourth dimensionally" - troubleshooting xpages
TRANSCRIPT
![Page 1: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/1.jpg)
"Marty, You're Just Not Thinking Fourth Dimensionally": Troubleshooting XPages
Paul Withers / 2nd Feb 2016
![Page 2: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/2.jpg)
Acknowledgements and Disclaimers
Availability. References in this presentation to IBM products, programs, or services do not imply that they will be available in all countries in which IBM
operates.
The workshops, sessions and materials have been prepared by IBM or the session speakers and reflect their own views. They are provided for informational
purposes only, and are neither intended to, nor shall have the effect of being, legal or other guidance or advice to any participant. While efforts were made to
verify the completeness and accuracy of the information contained in this presentation, it is provided AS-IS without warranty of any kind, express or implied. IBM
shall not be responsible for any damages arising out of the use of, or otherwise related to, this presentation or any other materials. Nothing contained in this
presentation is intended to, nor shall have the effect of, creating any warranties or representations from IBM or its suppliers or licensors, or altering the terms
and conditions of the applicable license agreement governing the use of IBM software.
All customer examples described are presented as illustrations of how those customers have used IBM products and the results they may have achieved.
Actual environmental costs and performance characteristics may vary by customer. Nothing contained in these materials is intended to, nor shall have the effect
of, stating or implying that any activities undertaken by you will result in any specific sales, revenue growth or other results.
© Copyright IBM Corporation 2015. All rights reserved.
• U.S. Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
• IBM, the IBM logo, ibm.com, and IBM Domino are trademarks or registered trademarks of International Business Machines Corporation in the United States, other countries, or both. If these and other IBM trademarked terms are marked on their first occurrence in this information with a trademark symbol (® or ™), these symbols indicate U.S. registered or common law trademarks owned by IBM at the time this information was published. Such trademarks may also be registered or common law trademarks in other countries. A current list of IBM trademarks is available on the Web at “Copyright and trademark information” at www.ibm.com/legal/copytrade.shtml
![Page 3: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/3.jpg)
About Me
“My name is Darth Vader. I am an extraterrestrial from
the planet Vulcan”
![Page 4: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/4.jpg)
Why This Session?
• XPages often doesn’t work “as expected”
Custom Control -> XPage -> Browser
Browser -> Server -> Browser
SSJS / CSJS
State management
Partial Refresh
• Lots of StackOverflow questions
Which wouldn’t be referenced here unless many developers hit the same issues!
![Page 5: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/5.jpg)
Agenda
• Buzz-Quote Bingo!
• Twin Pines Mall / Lone Pine Mall
• Marty’s Family Photo
• Marty McFly and the Tannens
• Power of Love
• Alternate 1985
• Indians!
• It’s Erased!
![Page 6: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/6.jpg)
BuzzQuote Bingo
• http://hermes.intec.co.uk/bttf
• Enter Name and Email
• Click when you hear
• Shout if you win!
![Page 7: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/7.jpg)
Twin Pines Mall / Lone Pine Mall
![Page 8: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/8.jpg)
Some Questions
• http://stackoverflow.com/questions/32256155/why-does-this-code-write-out-two-documents/32259533#32259533
• http://stackoverflow.com/questions/24400934/xpages-save-cancel-actions-scenario
• http://stackoverflow.com/questions/24407003/xpages-unid-of-documents-why-it-is-changing
• http://stackoverflow.com/questions/21015953/xpages-conflict-is-created-everytime-a-document-is-saved
![Page 9: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/9.jpg)
1. Retrieve/Create Code in documentId
• ALWAYS use ${…} when calculating properties like documentId
• Otherwise calculated FOUR times on page load
If attached to a Panel, TWICE AFTER beforePageLoad
If attached to XPage, TWICE BEFORE beforePageLoad
• Can’t use scoped variables set in beforePageLoad!
Always TWICE DURING render response
![Page 10: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/10.jpg)
1a. Timing of Initialisations
• viewScoped variables can’t be set before PAGE LOAD
Controller frameworks put variable in requestScope and move to viewScope
• data, dataContexts etc
attached to XPage / Custom Control - initialised alongside component
Attached to Panel – initialised during PAGE LOAD
![Page 11: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/11.jpg)
2. ignoreRequestParams
• ALWAYS use ignoreRequestParams where appropriate
If no params, computed settings respected
If params passed, computed settings overwritten
![Page 12: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/12.jpg)
3. Submit Button Type
• DON’T use save=“true” (“Submit” button type)
Use script, not simple actions
• Greater control, less risk
• You save only what should be saved
• Preparing you for Java / beans / beyond
• Form with single rich text field can cause problems even with script
![Page 13: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/13.jpg)
Marty’s Family Photo
![Page 14: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/14.jpg)
Some Questions
• http://stackoverflow.com/questions/33259105/xpages-button-unresponsive-after-4-ajax-calls/33260337#33260337
• http://stackoverflow.com/questions/32628012/xpages-losing-a-viewscoped-bean-again/32633453#32633453
• http://stackoverflow.com/questions/32482575/xpages-falling-out-of-server-side-cache/32483154#32483154
• http://stackoverflow.com/questions/33686362/xpages-page-loosing-context-weird-behaviour
• http://stackoverflow.com/questions/32628012/xpages-losing-a-viewscoped-bean-again/32633453#32633453
![Page 15: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/15.jpg)
4. Keep Pages In Memory
• XPages is stateful
• Number of component trees restricted for performance
• Dumped xsp.session.timeout minutes after browser closed
Browser doesn’t tell server session is no longer used!
![Page 16: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/16.jpg)
5. viewState=“nostate”
• viewState=“nostate”
Don’t store a component tree for this page
Best practice for XAgents / REST services
![Page 17: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/17.jpg)
6. Explanation of “nostate”
• DataView and nostate
Toggle expand/collapse is fine
Navigating to specific pages is fine
Next / Previous is relative to defaults
Toggle detail is relative to defaults
• Unless detailsOnClient=“true”
• Details pushed to browser along with rest of content
• “Toggle” is client-side show/hide
![Page 18: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/18.jpg)
Marty and the Tannens
![Page 19: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/19.jpg)
Some Questions
• http://stackoverflow.com/questions/31561306/how-do-i-access-a-repeat-control-from-the-outside-e-g-via-csjs/31575723#31575723
• http://stackoverflow.com/questions/27982313/xprepeat-inside-xedataview/27982614#27982614
• http://stackoverflow.com/questions/34158779/inherit-index-from-repeatcontrol-in-nested-custom-controls/34158954#34158954
• http://stackoverflow.com/questions/34652364/slider-in-repeat-control-and-manipulation-of-text-via-jouery/34653561#34653561
![Page 20: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/20.jpg)
7. Repeat Controls and Component Tree
• Only one set of components in component tree
• repeatControls=“true” changes behaviour
x many sets of components
Hard-wired to specific entries at page load
Pagers have no effect because of hard-wiring
Allows “loaded” computations within the repeat, e.g. id’s
• Cannot compute repeatControls=“true” within compositeData
![Page 21: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/21.jpg)
8. Dynamic Content Control
• Only components from current facet exist in component tree
• Component tree dynamically updated
• Better than showing / hiding via rendered property
![Page 22: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/22.jpg)
9. Custom Controls and Scope
• Custom control is inserted into component tree
• Variable names outside custom control available
• As long as same variable used, no need to pass
• Same rules as for any component
Is variable available by navigating upwards in tree?
Cannot retrieve variables from another branch
• E.g. different repeat entry, repeat entry from outside repeat
![Page 23: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/23.jpg)
Power of Love
![Page 24: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/24.jpg)
ControllingViewHandler
• Creates component tree for specific XPage
• Runs before beforePageLoad event
• super.createView() loads component tree
• Also creates viewScope
Not available before call to super.createView()
Load variables to requestScope before super.createView()
Move to viewScope after super.createView()
![Page 25: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/25.jpg)
ControllingViewHandler
![Page 26: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/26.jpg)
PhaseListener
• Handles XPages lifecycle
• On page load, only RENDER RESPONSE triggered
• Runs for every partial refresh
Ensure optimised
Ensure error handling
• Crucial for identifying why partial refresh is not behaving “as expected”
![Page 27: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/27.jpg)
PhaseListener
![Page 28: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/28.jpg)
Some Questions
• http://stackoverflow.com/questions/20477153/xpages-server-validation-errors-havent-been-displayed-to-the-user
• http://stackoverflow.com/questions/28339422/ssjs-onclick-action-will-not-fire-on-xpage/28340759#28340759
• http://stackoverflow.com/questions/33024777/xpages-how-to-do-partial-refresh-correctly
• http://www.intec.co.uk/view-isrenderingphase-and-buttons/
• http://www.intec.co.uk/fully-understanding-rendered-property-and-components-with-events/
![Page 29: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/29.jpg)
10. Understanding Partial Refresh
• Partial Refresh is SIX Phases
![Page 30: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/30.jpg)
10. Understanding Partial Refresh
• 1. RESTORE VIEW
Get component tree again
• 2. APPLY REQUEST VALUES
Pass String values from browser to executed component tree
• 3. PROCESS VALIDATIONS
Run validators AND converters for executed component tree
![Page 31: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/31.jpg)
10. Understanding Partial Refresh
• 4. UPDATE MODEL VALUES
Convert string values and update executed component tree
• 5. INVOKE APPLICATION
Run application logic (SSJS / Java)
• 6. RENDER RESPONSE
Update HTML for executed component tree and post refresh area
![Page 32: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/32.jpg)
11. Conditionally Hidden Save Button
• Set rendered property on button
For best practice, use view.isRenderingPhase()
Ensure set to true for other phases or code will not run
• Add partial refresh where appropriate
Ensure refresh area correct or button will not show
Ensure disableValidators=“true” or button will not hide again if invalid
![Page 33: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/33.jpg)
12. Reasons Code May Not Work!
• CSJS returning false – check Firebug for POST event
• Conversion error – 1,2,3,6
• Validation error – 1,2,3,6
• Exec id not including components being used by application logic
• Exec id not including component triggering application logic
• Event handler not rendered in phase 4
• Refresh area not including errors control
![Page 34: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/34.jpg)
13. Troubleshooting
• Use PhaseListener
• java.util.logging.ConsoleHandler.level manages console logging of server validation errors, since 8.5.3
In workspace\.config\rcpinstall.properties
• ALWAYS including errors control in refresh area
• Be conscious of rendered property
![Page 35: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/35.jpg)
BONUS 1: Data View
• dataCache=“id” setting available on View datasource
• Better for performance, only caches id, not full ViewEntry (wrapped)
• “var” not available during Apply Request Values
Compute value only in Render Response
![Page 36: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/36.jpg)
BONUS 2 - Dialog
• To refresh area, getComponent(“dialog1”).hide(“myRefreshArea”)
POST
• Run SSJS
• view.postScript - XSP.closeDialog
GET
• Refresh myRefreshArea
![Page 37: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/37.jpg)
Alternate 1985
![Page 38: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/38.jpg)
14. What Requires Restart Task HTTP?
• Picked up immediately
Classic design elements
XPages*
Custom Controls*
Java classes*
* Provided not in SCXD - http://www.intec.co.uk/single-copy-xpage-design-some-learning-and-why-its-not-for-me/
![Page 39: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/39.jpg)
14. What Requires Restart Task HTTP?
• Require “res task http”
JAR files
• http://stackoverflow.com/questions/30939347/jar-file-changes-in-lotus-notes-database-not-being-picked-up-by-domino-server
SCXD
OSGi plugin*
• http://stackoverflow.com/questions/33233724/while-in-development-in-xpages-libraries-changes-are-not-picked-up/33234041#33234041
Servlet / OSGi application*
* Without JRebel https://www.youtube.com/watch?v=EHbVgA2oqD0
![Page 40: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/40.jpg)
Indians!
![Page 41: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/41.jpg)
Question
• http://stackoverflow.com/questions/33190731/value-picker-get-error-typeerror-resp-is-null-in-xpages/33210520#33210520
![Page 42: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/42.jpg)
15. “Resp is null”
• Understand page load and dynamically
“resp is null” – options for picker are not available
Picker is client-side, but values are passed to renderer server-side
![Page 43: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/43.jpg)
16. SSJS in CSJS
• SSJS in CSJS
Computed server-side as part of script renderer
Only re-computed by partial refresh
• To access component values
Use dojo.byId or variants to access client-side element
Trigger partial refresh to update SSJS embedded into CSJS
![Page 44: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/44.jpg)
It’s Erased!
![Page 45: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/45.jpg)
Some Questions
• http://stackoverflow.com/questions/24735862/best-practice-for-storing-datetime-values-in-xpages
• http://stackoverflow.com/questions/34417067/xpages-notserializableexception-on-datetime/34417335?noredirect=1#comment56612210_34417335
• http://stackoverflow.com/questions/33168499/cannot-serialize-javascript-function/33168732#33168732
![Page 46: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/46.jpg)
17. Domino Objects in Scopes
• Domino objects can’t be stored in scopes.
DateTimes are the most common culprit
Use .toJavaDate() to store Java Date
• Similar issues with SSJS functions stored in variables
![Page 47: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/47.jpg)
18. Impact of Persistence Setting
• For Domino objects in scopes, depending on persistence setting
Keep pages in memory – value just lost
Keep pages on disk – error thrown to server, redirect to error page (fails to display)
Keep current page in memory – value just lost, error 500 on navigating
![Page 48: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/48.jpg)
Summary
• Understand ignoreRequestParams
• Avoid simple actions
• Keep Pages in Memory – understand impacts
• Use viewState=“nostate”
• Understand detailsOnClient=“true”
• Understand repeatControls=“true”
![Page 49: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/49.jpg)
Summary
• Understand scope and custom controls
• Understand partial refresh is more than just “partial refresh”
• Understand SSJS is computed and injected into CSJS
• Use Firebug or comparable tool
• Don’t store Domino objects in scopes
• Understand impact of serialization
![Page 50: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/50.jpg)
Thank You!
Paul Withers
Intec Systems Ltd
IBM Champion
OpenNTF Board Member
@paulswithers
http://www.intec.co.uk/blog
![Page 51: AD1279 "Marty, You're Not Thinking Fourth Dimensionally" - Troubleshooting XPages](https://reader034.vdocuments.us/reader034/viewer/2022042707/5871984d1a28ab044e8b51bd/html5/thumbnails/51.jpg)
Thank you