Slide 1

Slide 1 text

#engageug Dev04 A Domino R5 Applica.on Upgrade Project: What Could Possibly Go Wrong? Serdar Basegmez, Developi Informa.on Systems Graham Acres, Brytek Systems Inc.

Slide 2

Slide 2 text

#engageug Serdar Basegmez • IBM Champion (2011 - 2018) • Developi InformaCon Systems, Istanbul • Notes/Domino/XPages Developer, half-blooded admin! • Member Director at OpenNTF Board • LUGTR, LotusNotus.com • EngageUG, IBM Connect, ICON UK, NotesIn9… • Blogger and Podcaster on ScienCfic SkepCcism serdar_basegmez 2

Slide 3

Slide 3 text

#engageug • IBM Champion (2017, 2018) • Brytek Systems Inc., Vancouver • Notes Developer since 1992 (v2.1) • Core Team Member, Cross Canada CollaboraCon User Group • Lotusphere, Connect, C3UG, NotesIn9, LUGs • Cyclist, Minor Hockey Coach, I built a greenhouse! Graham Acres gacres99 3

Slide 4

Slide 4 text

#engageug Disclaimer! • Many of these emoCons were experienced during this project • We will convey as many of them as possible during this presentaCon • Very few of them may be afributed to Notes and Domino, but to a nameless developer lost to the sands of Cme… 4

Slide 5

Slide 5 text

#engageug Our Story • Let’s Introduce the App • Convincing the Customer to Upgrade • The Plan • What Actually Happened • Facepalms, Lots of Facepalms! • Lessons Learned 5

Slide 6

Slide 6 text

#engageug Introducing the ApplicaCon http://www.sandsmuseum.com/cars/elise/experience/maintenance/frontclam/clamremoval.html 6

Slide 7

Slide 7 text

#engageug The App • Yes, there are sCll R5 apps out there • NDA • Built in 1999 • Register / Search for Financial Instruments • Notes for business logic and administraCve processing • Web front end for clients • 8 templates, 10 NSFs, plus numerous archives • IntegraCon with SQL Server, RightFax, proprietary scanning somware • PDF GeneraCon using Adobe Acrobat 4! 7

Slide 8

Slide 8 text

#engageug Convincing the Customer to Upgrade • Introduced in 2010 to adjust tax calculaCons • Limited exposure amer that first project • Talked for 3 years about an upgrade • RightFax upgrade no longer supported R5 • Server and workstaCon OS upgrades • Replace or Upgrade? • Budget to replace was 3x more than upgrade budget • Actually agreed to start in 2016 • Started in 2017 • Should be upgraded in 2018 8

Slide 9

Slide 9 text

#engageug What is the Plan?

Slide 10

Slide 10 text

#engageug The Plan • Build your team and your toolbox • Team needs to learn the app • Build a new 9.0.1 server • Migrate all templates • Test Notes funcConality for defects • Test data for encrypted fields (cert.id password) • Rewrite of web app • Rewrite of PDF module • Keep everything else the same 10

Slide 11

Slide 11 text

#engageug The Toolbox… • 3 CiCes, 4 ConCnents, 3 Timezones • CollaboraCon is tough. • Slack / Skype / Trello / Box • IBM Watson Workspace • Hammer… 11

Slide 12

Slide 12 text

#engageug Sharing Code… • Bitbucket for the Repositories • Source Control issues… • Designer is very bad for source control… • First, tried a single repo, but failed a couple of Cmes and lost some work. • We switched to our own repos, Slack helped to keep in sync • Good, because all commits have been audited by other • Bad, because it’s Cme-consuming. 12

Slide 13

Slide 13 text

#engageug Learn The App • No documentaCon • No comments, anywhere • All filenames had a space in them • No conCnuity from dev to dev • Massive LotusScript libraries (a lot of “copy of”s) 13

Slide 14

Slide 14 text

#engageug From the Current Help For optimal access to the System, the minimum computer system requirements are as follows: • Pentium-class PC computer, 32 mb of RAM • Windows 95 or Windows NT operating system • Modem (internal or external) with a minimum speed of 33.6 kbps, and connection to an uninterrupted phone line • Laser printer, letter-size tray • Internet Connection Software • Web browser software - Netscape Navigator 3.0+ has been tested and proven to be compatible 14

Slide 15

Slide 15 text

#engageug Learn The Server • “What was the password of Cert.id file?” • Time zone change • OS upgrades • Security in the extreme 15

Slide 16

Slide 16 text

#engageug Back to The App • Forms • ValidaCon steps in web process meant separate Forms, controlled by WebQuerySave agents: massive useless forms need to be purged • Different business processes, but fields that hold the same data, with different field names (we will come back to this!) • Navigators! • Pages • No Framesets 16

Slide 17

Slide 17 text

#engageug Write Your Agents Step by Step 17

Slide 18

Slide 18 text

#engageug The Scanner • A separate, really old workstaCon afached to a scanner • Proprietary scanner somware • A small app with a LotusScript agent to import the scanned files and metadata • No working floppy drive, No working network drives • New scanner and workstaCon meant analysis of the LotusScript, but how to get at it? 18

Slide 19

Slide 19 text

#engageug GeneraCng PDF Files in 1999 • An agent to create PDF… • Used every worst pracCce one can possibly think of. • Too many assumpCons. • Too many dependencies on external libraries. • Dependency to some files and folders that should exist. • Of course, NOTHING DOCUMENTED! • Rewrite needed because of the Acrobat version… 19

Slide 20

Slide 20 text

#engageug Our Painful Experience… 20

Slide 21

Slide 21 text

#engageug What Actually Happened • Remember our plan: • Move templates to 9.0.1 server and test • Rewrite the Web app in XPages • Rewrite the PDF module • Test the data in a new Notes domain (cert.id password) 21

Slide 22

Slide 22 text

#engageug The Notes Side of Things • Zero issues! • All code (including the warts) ran fine • No password on the Cert.id • No encrypted data, so just migrate it 22

Slide 23

Slide 23 text

#engageug The Web ApplicaCon Rewrite • The old applicaCon was fantasCc :) • 2-4 Web Query Agents • 3-4 Web Form Designs • Script Libraries • Spitng out temporary documents everywhere! 23 Editable Form Read Only Form A Silly Question Thanks! Temporary Document ⚙ Web Query Save ⚙ Web Query Save ⚙ Web Query Save ⚙ Web Query Save ⚙ Web Query Save Temporary Document (For Each Process!!!)

Slide 24

Slide 24 text

#engageug All That Code • ConverCng mission-criCcal parts to Java… • LS code, formulas, logic, etc. • MulCple copies of the same code? • A task coded in an agent, separate version for PDF. • A duplicate, slightly modified for some rare cases. • Another, modified in a different database… • All in use, for the same task, 4 different ways! 24

Slide 25

Slide 25 text

#engageug XPagifying… • Development Speed is the Gold! • We’ll have lots of garbage to deal with! • A General UI/UX Framework based on Bootstrap 3 • Java Beans and Caching Beans for the back-end • Minimal use of SSJS (to enforce the use of Java) 25

Slide 26

Slide 26 text

#engageug CreaCng a PDF: How hard it can be? • We preferred Java with Apache PDFBox • Open source, compaCble, easy to use, familiar to us. • But not hassle-free! • Needed to use Java agent because of the way they use. So maintained some duplicate code. • We couldn’t use the latest version because of an unidenCfied issue with resources. • Developed a simple layout helper. Took some Cme but it paid back amerwards. 26

Slide 27

Slide 27 text

#engageug 27

Slide 28

Slide 28 text

#engageug Facepalms! • Found a computed field, just for a formafed date Cme to be used in an agent. 28

Slide 29

Slide 29 text

#engageug Facepalms! • Taking a TIFF, insert it into a new PDF, so you can add it to another PDF… 29

Slide 30

Slide 30 text

#engageug Facepalms! • Use [Back] in Netscape to create a new transacCon 30

Slide 31

Slide 31 text

#engageug Facepalms! • No remote access to the client’s server environments. Onsite for everything 31

Slide 32

Slide 32 text

#engageug Technotes, Belated… • IdenCfied a bug introduced in R6 of Notes where an @Formula agent to clear the contents of a Private on first use Folder results in an error that appears to have never been fixed. • IdenCfied a memory leak in the PDF Agent. JAR files afached into Java agents leak the memory and they crash the server amer a while. 32

Slide 33

Slide 33 text

#engageug Two Weeks Ago… • The ProducCon R5 server ran out of storage space 33

Slide 34

Slide 34 text

#engageug Lessons Learned… 34

Slide 35

Slide 35 text

#engageug Lessons Learned • Tradeoff of adapCng the old design vs creaCng a new design • New design means migraCon of exisCng data • Results in a cost of Cme, tesCng, funcConality • Would introduce heavy work tesCng on the Notes side • Keeping the old design means keeping the old warts and working with/around them • UlCmately this took longer than originally planned 35

Slide 36

Slide 36 text

#engageug Lessons Learned • Resourcing / availability • Project management, meeCngs, calls • Dev team 11 hr Cme difference! • Missing deadlines • Be prepared to work with people who aren’t fully knowledgeable on the products they are responsible for that integrate with Domino • Security, and firewall requirements • Scope: Who is responsible for install/config of servers and clients? 36

Slide 37

Slide 37 text

#engageug Lessons Learned • Analysis step is full of surprises… • Do not learn the applicaCon from the code! • What the applicaCon does is not the problem. • Ask users how they do things! • What bufons they use, which fields they fill in, etc. • Try to determine what design elements are in use and what were no longer used • Spare Cme for the analysis up front, or pay for it later 37

Slide 38

Slide 38 text

#engageug Lessons Learned • Notes is solid! 38

Slide 39

Slide 39 text

#engageug QuesCons Thank you!! @serdar_basegmez @gacres99 39