SlideShare a Scribd company logo
Lino Schildenfeld 26th
April 2017
Oracle APEX
Our experience – Upgrading to 5.1.1
www.apexRnD.co.nz
lschilde.blogspot.com
@LinoSchilde
lschilde@apexRnD.co.nz
AUSOUG WA
...in short
APEX R&D manager for NZ and AU
10+ years Oracle development experience
APEX Blogger and enthusiast
NZ APEX meetup organizer
Conference speaker
Who am I?
Safe harbor……….
APEX Template Basics
apex.oracle.comapex.world
What we know
Themes and templates are responsible for the look and feel
of APEX applications.
Nine different types:
Bradcrumb, Button, Calendar, Label, List, Page, Popup LOV,
Region, Report
Themes and templates
Custom modifications
Easy?
Enterprise identity
Standards
APEX 5 and Theme Roller
CSS export
Migration
3.2 -> 4.x
4.x -> 5.0
5.0 -> 5.1.1
APEX 5.1.1 release notes
https://apex.oracle.com/otn/
Our story
20 applications -> 2 mobile most running apex 5.0
about 6 running in 4.2 compatibility mode.
apex.oracle.comapex.world
Desktop DEMO
apex.oracle.comapex.world
Error 1 – Page Item
"error":"Ajax call returned server error ORA-20987: APEX - Session state protection
violation: This may be caused by manual alteration of a URL containing a checksum
or by using a link with an incorrect or missing checksum. If you are unsure what
caused this error, please contact the application administrator for assistance. - Contact
your application administrator. for ."
Error 1
"error":"Ajax call returned server error ORA-20987: APEX - Session state protection
violation: This may be caused by manual alteration of a URL containing a checksum
or by using a link with an incorrect or missing checksum. If you are unsure what
caused this error, please contact the application administrator for assistance. - Contact
your application administrator. for ."
Error 2 – Interactive report
Chrome console throws this error when you select Action- > Filter
Error 2 - IR
http://lschilde.blogspot.com.au/2017/04/apex-51-migration-compatibility-tips.html
4. problem
Bad programming practice example.
Error 3 – Application page
Uncaught TypeError: Cannot read property 'pageItems' of undefined
at i (desktop.min.js:10)
at h (desktop.min.js:10)
at Object.a.process (desktop.min.js:10)
at Object.handleJson [as success] (map_rbgassessment.js:232)
at i (jquery-2.2.3.min.js:2)
at Object.fireWith [as resolveWith] (jquery-2.2.3.min.js:2)
at z (jquery-2.2.3.min.js:4)
at HTMLScriptElement.c (jquery-2.2.3.min.js:4)
at HTMLScriptElement.dispatch (jquery-2.2.3.min.js:3)
at HTMLScriptElement.r.handle (jquery-2.2.3.min.js:3)
Error 3 – Application page
Simple page with this AJAX call
apex.server.process ("deletePins");
deletepins process-> simple as
delete RATE_COLLECTION. TMP_PIN_NUMBERS;
Error 3 – Application page
SOLUTION rewrite AJAX call
apex.server.process ( "deletePins", {
x01: "test",
pageItems: ""
}, {
success: function( pData ) {
console.log("(done) deletePins ");
console.info(data);
}
} );
Error 4 – Report region
ISSUE: Download is showing additional column with url
Report on a page had SQL query for the source
SELECT '<a href="javascript:apex.confirm(''Do you want to
return this organism as a member?'', ''REVIVE_' || CARRIER_ID
|| ''');"><img src="#WORKSPACE_IMAGES#red-delete.svg"
alt="revive" title="Revive Member"></a>'
SHOW demo....
Error 4 – Report region
SOLUTION
Export / Printing
Include In Export / Print
Yes No -> set to NO defaulted to YES
Error 5 – Home breadcrumb link
Apex 4.x compatibility apps have an issue with the home breadcrumb not
substituting values
Rendered URL looks like this:
http://agfjsrmw605.agric.wa.gov.au:9004/apex/eds/f?
p=&APP_ID.:HOME:&SESSION.
Error 5 – Home breadcrumb link
http://lschilde.blogspot.com.au/2017/04/apex-51-migration-compatibility-tips.html
2. problem
Other
ERROR 6:
Dialogs for applications running in compatibility:
Front dialog not at correct z-index – unable to click due to modal click blocker
being in front. (Selenium tests still work)
Workaround – add style
body .ui-dialog.ui-front{z-index:1001 !important}
ERROR 7: Change in Y/N behaviour:
The Yes/No field type has changed to Switch – but does not allow null values.
Workaround – change to LOV dropdown with Y/N and allow null value.
Mobile DEMO
apex.oracle.comapex.world
1 apex.server.process
ERROR 1:
Simple page when rendered would give this error
Uncaught TypeError: Cannot read property 'pageItems' of null
at i (mobile.min.js?v=5.1.1.00.08:10)
at h (mobile.min.js?v=5.1.1.00.08:10)
at Object.a.process (mobile.min.js?v=5.1.1.00.08:10)
at toggleFavourite (f?
p=106:5:21554343857848::NO:RP,10:P5_STATION_CODE,P5_STATION_NAME,P5_S
OURCE_PAGE:BA, Badgingarra,1:200)
at <anonymous>:1:1
1 apex.server.process
The core of the problem was this JavaScript
<script>
function toggleFavourite() {
apex.server.process (
"togglefavourite",
null,
{
dataType: 'text',
success: function(isFavourite) {
if(isFavourite=='Y') $
('#favouritebutton').addClass('favourite');
else $('#favouritebutton').removeClass('favourite');
}
} );
}
</script>
NULL was an issue
2 invalid JSON
togglefavourite PROCESS:
begin
htp.prn('Y');
end;
Now this became an invalid JSON as characters need a quotes htp.prn('"Y"');
3 Map error
Uncaught ReferenceError: google is not defined
at HTMLDivElement.eval (eval at globalEval (jquery-
2.2.3.min.js?v=5.1.1.00.08:2), <anonymous>:39:20)
at HTMLDivElement.e (jquery-2.2.3.min.js?v=5.1.1.00.08:3)
at HTMLDivElement.dispatch (jquery-2.2.3.min.js?
v=5.1.1.00.08:3)
at HTMLDivElement.r.handle (jquery-2.2.3.min.js?
v=5.1.1.00.08:3)
Page 15
3 Map error
By changing reference to a a Google JS library from inline on
page to page template
https://maps.googleapis.com/maps/api/js?
key=&GOOGLE_API_KEY.&v=3.26&libraries=weather
4 Menu error
bigSlide menu JS
Menu did not work after Save or any navigation happened in the
application was clicked.
Lets have a look at Page with right panel template
4 Menu error
problem was in new way APEX template work (since 4.2 version)
If you are on page ID 1 and navigate to page ID 5 menu stops working because your
page DOM holds more elements with same ID.
Why? inspect your DOM when you navigate from page to page
<div id="P1" data-role="page" data-apex-page-transition="none"
data-apex-popup-transition="none" data-theme="c" data-url
<div id="P5" data-role="page" data-apex-page-transition="none"
data-apex-popup-transition="none" data-theme="c" data-url.....
.....
We had a button on page 0 called Menu with static ID = rightpanel-link. JavaScript
was triggering on ID click which was now broken as multiple existed on same page.
work around apply logic but with the use of a classes.....
insted of $('#rightpanel-link').bigSlide(
$('.rightpanel-link').bigSlide(.....
4b Menu error
Another menu issue showing blank. Region had a condition not to render on page
101.
Due to 101 condition?????? For some reason content was not loaded in.
APEX 5.1.1 Mobile link bug
Demo - APEX mobile bug
I tested this on apex.oracle.com and on new application using 5.1
APEX 5.0 - fine
APEX 5.1.1 - broken
Summary
Future sessions
APEX Intro part I – 27 April 2017
http://www.ausoug.org.au/pages/calendar
www.apexofficeprint.com
Q&A
www.apexRnD.co.nz
lschilde.blogspot.com
@LinoSchilde
lschilde@apexRnD.co.nz
Ad

More Related Content

What's hot (20)

Apex RnD APEX 5 - Printing
Apex RnD APEX 5 - PrintingApex RnD APEX 5 - Printing
Apex RnD APEX 5 - Printing
Lino Schildenfeld
 
Printing with APEX: PL/PDF
Printing with APEX: PL/PDFPrinting with APEX: PL/PDF
Printing with APEX: PL/PDF
Enkitec
 
Mastering universal theme
Mastering universal themeMastering universal theme
Mastering universal theme
Roel Hartman
 
Creating a Business Oriented UI in APEX
Creating a Business Oriented UI in APEXCreating a Business Oriented UI in APEX
Creating a Business Oriented UI in APEX
Enkitec
 
Alt tab - better apex tabs
Alt tab - better apex tabsAlt tab - better apex tabs
Alt tab - better apex tabs
Enkitec
 
Installing Oracle 11g and Oracle Apex 5.1 ( Easy Way To install)
Installing Oracle 11g and Oracle Apex 5.1 ( Easy Way To install)Installing Oracle 11g and Oracle Apex 5.1 ( Easy Way To install)
Installing Oracle 11g and Oracle Apex 5.1 ( Easy Way To install)
Abdul Rafay
 
Do's and don'ts for Office 365 development
Do's and don'ts for Office 365 developmentDo's and don'ts for Office 365 development
Do's and don'ts for Office 365 development
Chris O'Brien
 
How to make APEX print through Node.js
How to make APEX print through Node.jsHow to make APEX print through Node.js
How to make APEX print through Node.js
Dimitri Gielis
 
Automated testing APEX Applications
Automated testing APEX ApplicationsAutomated testing APEX Applications
Automated testing APEX Applications
Roel Hartman
 
APEX Behind the Scenes by Scott Spendolini
APEX Behind the Scenes by Scott SpendoliniAPEX Behind the Scenes by Scott Spendolini
APEX Behind the Scenes by Scott Spendolini
Enkitec
 
Reporting with Oracle Application Express (APEX)
Reporting with Oracle Application Express (APEX)Reporting with Oracle Application Express (APEX)
Reporting with Oracle Application Express (APEX)
Dimitri Gielis
 
Oracle application express
Oracle application expressOracle application express
Oracle application express
Abhinaw Kumar
 
Moving your APEX app to the Oracle Exadata Express Cloud
Moving your APEX app to the Oracle Exadata Express CloudMoving your APEX app to the Oracle Exadata Express Cloud
Moving your APEX app to the Oracle Exadata Express Cloud
Dimitri Gielis
 
Apex & jQuery Mobile
Apex & jQuery MobileApex & jQuery Mobile
Apex & jQuery Mobile
Christian Rokitta
 
Take a load off! Load testing your Oracle APEX or JDeveloper web applications
Take a load off! Load testing your Oracle APEX or JDeveloper web applicationsTake a load off! Load testing your Oracle APEX or JDeveloper web applications
Take a load off! Load testing your Oracle APEX or JDeveloper web applications
Sage Computing Services
 
ECS19 Bert Jansen - Modernizing your existing sites
ECS19 Bert Jansen - Modernizing your existing sitesECS19 Bert Jansen - Modernizing your existing sites
ECS19 Bert Jansen - Modernizing your existing sites
European Collaboration Summit
 
A Primer on Web Components in APEX
A Primer on Web Components in APEXA Primer on Web Components in APEX
A Primer on Web Components in APEX
Dimitri Gielis
 
JavaScript straight from the Oracle Database
JavaScript straight from the Oracle DatabaseJavaScript straight from the Oracle Database
JavaScript straight from the Oracle Database
Dimitri Gielis
 
LOBS, BLOBS, CLOBS: Dealing with Attachments in APEX
LOBS, BLOBS, CLOBS: Dealing with Attachments in APEXLOBS, BLOBS, CLOBS: Dealing with Attachments in APEX
LOBS, BLOBS, CLOBS: Dealing with Attachments in APEX
Enkitec
 
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem. SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
Kushan Lahiru Perera
 
Printing with APEX: PL/PDF
Printing with APEX: PL/PDFPrinting with APEX: PL/PDF
Printing with APEX: PL/PDF
Enkitec
 
Mastering universal theme
Mastering universal themeMastering universal theme
Mastering universal theme
Roel Hartman
 
Creating a Business Oriented UI in APEX
Creating a Business Oriented UI in APEXCreating a Business Oriented UI in APEX
Creating a Business Oriented UI in APEX
Enkitec
 
Alt tab - better apex tabs
Alt tab - better apex tabsAlt tab - better apex tabs
Alt tab - better apex tabs
Enkitec
 
Installing Oracle 11g and Oracle Apex 5.1 ( Easy Way To install)
Installing Oracle 11g and Oracle Apex 5.1 ( Easy Way To install)Installing Oracle 11g and Oracle Apex 5.1 ( Easy Way To install)
Installing Oracle 11g and Oracle Apex 5.1 ( Easy Way To install)
Abdul Rafay
 
Do's and don'ts for Office 365 development
Do's and don'ts for Office 365 developmentDo's and don'ts for Office 365 development
Do's and don'ts for Office 365 development
Chris O'Brien
 
How to make APEX print through Node.js
How to make APEX print through Node.jsHow to make APEX print through Node.js
How to make APEX print through Node.js
Dimitri Gielis
 
Automated testing APEX Applications
Automated testing APEX ApplicationsAutomated testing APEX Applications
Automated testing APEX Applications
Roel Hartman
 
APEX Behind the Scenes by Scott Spendolini
APEX Behind the Scenes by Scott SpendoliniAPEX Behind the Scenes by Scott Spendolini
APEX Behind the Scenes by Scott Spendolini
Enkitec
 
Reporting with Oracle Application Express (APEX)
Reporting with Oracle Application Express (APEX)Reporting with Oracle Application Express (APEX)
Reporting with Oracle Application Express (APEX)
Dimitri Gielis
 
Oracle application express
Oracle application expressOracle application express
Oracle application express
Abhinaw Kumar
 
Moving your APEX app to the Oracle Exadata Express Cloud
Moving your APEX app to the Oracle Exadata Express CloudMoving your APEX app to the Oracle Exadata Express Cloud
Moving your APEX app to the Oracle Exadata Express Cloud
Dimitri Gielis
 
Take a load off! Load testing your Oracle APEX or JDeveloper web applications
Take a load off! Load testing your Oracle APEX or JDeveloper web applicationsTake a load off! Load testing your Oracle APEX or JDeveloper web applications
Take a load off! Load testing your Oracle APEX or JDeveloper web applications
Sage Computing Services
 
A Primer on Web Components in APEX
A Primer on Web Components in APEXA Primer on Web Components in APEX
A Primer on Web Components in APEX
Dimitri Gielis
 
JavaScript straight from the Oracle Database
JavaScript straight from the Oracle DatabaseJavaScript straight from the Oracle Database
JavaScript straight from the Oracle Database
Dimitri Gielis
 
LOBS, BLOBS, CLOBS: Dealing with Attachments in APEX
LOBS, BLOBS, CLOBS: Dealing with Attachments in APEXLOBS, BLOBS, CLOBS: Dealing with Attachments in APEX
LOBS, BLOBS, CLOBS: Dealing with Attachments in APEX
Enkitec
 
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem. SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
SharePoint Framework -The future of SharePoint/ Office 365 developer ecosystem.
Kushan Lahiru Perera
 

Similar to Oracle APEX migration to 5.1 - Our experience (20)

jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
Guy Royse
 
huhu
huhuhuhu
huhu
Dung Trương
 
Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App Engine
Andy McKay
 
Chromium Embedded Framework + Go at Brooklyn JS
Chromium Embedded Framework + Go at Brooklyn JSChromium Embedded Framework + Go at Brooklyn JS
Chromium Embedded Framework + Go at Brooklyn JS
quirkey
 
Intro to Javascript
Intro to JavascriptIntro to Javascript
Intro to Javascript
Anjan Banda
 
Василевский Илья (Fun-box): "автоматизация браузера при помощи PhantomJS"
Василевский Илья (Fun-box): "автоматизация браузера при помощи PhantomJS"Василевский Илья (Fun-box): "автоматизация браузера при помощи PhantomJS"
Василевский Илья (Fun-box): "автоматизация браузера при помощи PhantomJS"
Provectus
 
WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open web
pjcozzi
 
Web Performance Part 4 "Client-side performance"
Web Performance Part 4  "Client-side performance"Web Performance Part 4  "Client-side performance"
Web Performance Part 4 "Client-side performance"
Binary Studio
 
Using Task Queues and D3.js to build an analytics product on App Engine
Using Task Queues and D3.js to build an analytics product on App EngineUsing Task Queues and D3.js to build an analytics product on App Engine
Using Task Queues and D3.js to build an analytics product on App Engine
River of Talent
 
1時間で作るマッシュアップサービス(関西版)
1時間で作るマッシュアップサービス(関西版)1時間で作るマッシュアップサービス(関西版)
1時間で作るマッシュアップサービス(関西版)
Yuichiro MASUI
 
Fact, Fiction, and FP
Fact, Fiction, and FPFact, Fiction, and FP
Fact, Fiction, and FP
Brian Lonsdorf
 
Interoperable Component Patterns
Interoperable Component PatternsInteroperable Component Patterns
Interoperable Component Patterns
Matthew Beale
 
JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing Up
David Padbury
 
Google app engine by example
Google app engine by exampleGoogle app engine by example
Google app engine by example
Alexander Zamkovyi
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
Francois Zaninotto
 
Play vs Rails
Play vs RailsPlay vs Rails
Play vs Rails
Daniel Cukier
 
SproutCore is Awesome - HTML5 Summer DevFest
SproutCore is Awesome - HTML5 Summer DevFestSproutCore is Awesome - HTML5 Summer DevFest
SproutCore is Awesome - HTML5 Summer DevFest
tomdale
 
Finding Concurrency Errors in Event-Driven Applications - Strangeloop'14
Finding Concurrency Errors in Event-Driven Applications - Strangeloop'14Finding Concurrency Errors in Event-Driven Applications - Strangeloop'14
Finding Concurrency Errors in Event-Driven Applications - Strangeloop'14
Pavol Bielik
 
OSC2007-niigata - mashup
OSC2007-niigata - mashupOSC2007-niigata - mashup
OSC2007-niigata - mashup
Yuichiro MASUI
 
React & The Art of Managing Complexity
React &  The Art of Managing ComplexityReact &  The Art of Managing Complexity
React & The Art of Managing Complexity
Ryan Anklam
 
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScriptjQuery & 10,000 Global Functions: Working with Legacy JavaScript
jQuery & 10,000 Global Functions: Working with Legacy JavaScript
Guy Royse
 
Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App Engine
Andy McKay
 
Chromium Embedded Framework + Go at Brooklyn JS
Chromium Embedded Framework + Go at Brooklyn JSChromium Embedded Framework + Go at Brooklyn JS
Chromium Embedded Framework + Go at Brooklyn JS
quirkey
 
Intro to Javascript
Intro to JavascriptIntro to Javascript
Intro to Javascript
Anjan Banda
 
Василевский Илья (Fun-box): "автоматизация браузера при помощи PhantomJS"
Василевский Илья (Fun-box): "автоматизация браузера при помощи PhantomJS"Василевский Илья (Fun-box): "автоматизация браузера при помощи PhantomJS"
Василевский Илья (Fun-box): "автоматизация браузера при помощи PhantomJS"
Provectus
 
WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open web
pjcozzi
 
Web Performance Part 4 "Client-side performance"
Web Performance Part 4  "Client-side performance"Web Performance Part 4  "Client-side performance"
Web Performance Part 4 "Client-side performance"
Binary Studio
 
Using Task Queues and D3.js to build an analytics product on App Engine
Using Task Queues and D3.js to build an analytics product on App EngineUsing Task Queues and D3.js to build an analytics product on App Engine
Using Task Queues and D3.js to build an analytics product on App Engine
River of Talent
 
1時間で作るマッシュアップサービス(関西版)
1時間で作るマッシュアップサービス(関西版)1時間で作るマッシュアップサービス(関西版)
1時間で作るマッシュアップサービス(関西版)
Yuichiro MASUI
 
Interoperable Component Patterns
Interoperable Component PatternsInteroperable Component Patterns
Interoperable Component Patterns
Matthew Beale
 
JavaScript Growing Up
JavaScript Growing UpJavaScript Growing Up
JavaScript Growing Up
David Padbury
 
Bonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node jsBonnes pratiques de développement avec Node js
Bonnes pratiques de développement avec Node js
Francois Zaninotto
 
SproutCore is Awesome - HTML5 Summer DevFest
SproutCore is Awesome - HTML5 Summer DevFestSproutCore is Awesome - HTML5 Summer DevFest
SproutCore is Awesome - HTML5 Summer DevFest
tomdale
 
Finding Concurrency Errors in Event-Driven Applications - Strangeloop'14
Finding Concurrency Errors in Event-Driven Applications - Strangeloop'14Finding Concurrency Errors in Event-Driven Applications - Strangeloop'14
Finding Concurrency Errors in Event-Driven Applications - Strangeloop'14
Pavol Bielik
 
OSC2007-niigata - mashup
OSC2007-niigata - mashupOSC2007-niigata - mashup
OSC2007-niigata - mashup
Yuichiro MASUI
 
React & The Art of Managing Complexity
React &  The Art of Managing ComplexityReact &  The Art of Managing Complexity
React & The Art of Managing Complexity
Ryan Anklam
 
Ad

More from Lino Schildenfeld (6)

Groundbreakers tour 2018 - Dynamic actions for dummies
Groundbreakers tour 2018 - Dynamic actions for dummiesGroundbreakers tour 2018 - Dynamic actions for dummies
Groundbreakers tour 2018 - Dynamic actions for dummies
Lino Schildenfeld
 
Ausoug Connect 2018 - Modern APEX application
Ausoug Connect 2018 - Modern APEX application Ausoug Connect 2018 - Modern APEX application
Ausoug Connect 2018 - Modern APEX application
Lino Schildenfeld
 
Intro on Oracle Application express - APEX
Intro on Oracle Application express - APEXIntro on Oracle Application express - APEX
Intro on Oracle Application express - APEX
Lino Schildenfeld
 
Oracle APEX plugins - AUSOUG Connect 2016
Oracle APEX plugins - AUSOUG Connect 2016Oracle APEX plugins - AUSOUG Connect 2016
Oracle APEX plugins - AUSOUG Connect 2016
Lino Schildenfeld
 
APEX 5.1 features - AUSOUG Connect 2016
APEX 5.1 features - AUSOUG Connect 2016APEX 5.1 features - AUSOUG Connect 2016
APEX 5.1 features - AUSOUG Connect 2016
Lino Schildenfeld
 
APEX, restful services and STRIPE
APEX, restful services and STRIPEAPEX, restful services and STRIPE
APEX, restful services and STRIPE
Lino Schildenfeld
 
Groundbreakers tour 2018 - Dynamic actions for dummies
Groundbreakers tour 2018 - Dynamic actions for dummiesGroundbreakers tour 2018 - Dynamic actions for dummies
Groundbreakers tour 2018 - Dynamic actions for dummies
Lino Schildenfeld
 
Ausoug Connect 2018 - Modern APEX application
Ausoug Connect 2018 - Modern APEX application Ausoug Connect 2018 - Modern APEX application
Ausoug Connect 2018 - Modern APEX application
Lino Schildenfeld
 
Intro on Oracle Application express - APEX
Intro on Oracle Application express - APEXIntro on Oracle Application express - APEX
Intro on Oracle Application express - APEX
Lino Schildenfeld
 
Oracle APEX plugins - AUSOUG Connect 2016
Oracle APEX plugins - AUSOUG Connect 2016Oracle APEX plugins - AUSOUG Connect 2016
Oracle APEX plugins - AUSOUG Connect 2016
Lino Schildenfeld
 
APEX 5.1 features - AUSOUG Connect 2016
APEX 5.1 features - AUSOUG Connect 2016APEX 5.1 features - AUSOUG Connect 2016
APEX 5.1 features - AUSOUG Connect 2016
Lino Schildenfeld
 
APEX, restful services and STRIPE
APEX, restful services and STRIPEAPEX, restful services and STRIPE
APEX, restful services and STRIPE
Lino Schildenfeld
 
Ad

Recently uploaded (20)

LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Not So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java WebinarNot So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java Webinar
Tier1 app
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRYLEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
LEARN SEO AND INCREASE YOUR KNOWLDGE IN SOFTWARE INDUSTRY
NidaFarooq10
 
Not So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java WebinarNot So Common Memory Leaks in Java Webinar
Not So Common Memory Leaks in Java Webinar
Tier1 app
 
Automation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath CertificateAutomation Techniques in RPA - UiPath Certificate
Automation Techniques in RPA - UiPath Certificate
VICTOR MAESTRE RAMIREZ
 
How to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud PerformanceHow to Optimize Your AWS Environment for Improved Cloud Performance
How to Optimize Your AWS Environment for Improved Cloud Performance
ThousandEyes
 
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...Explaining GitHub Actions Failures with Large Language Models Challenges, In...
Explaining GitHub Actions Failures with Large Language Models Challenges, In...
ssuserb14185
 
Expand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchangeExpand your AI adoption with AgentExchange
Expand your AI adoption with AgentExchange
Fexle Services Pvt. Ltd.
 
EASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License CodeEASEUS Partition Master Crack + License Code
EASEUS Partition Master Crack + License Code
aneelaramzan63
 
Exploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the FutureExploring Wayland: A Modern Display Server for the Future
Exploring Wayland: A Modern Display Server for the Future
ICS
 
FL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full VersionFL Studio Producer Edition Crack 2025 Full Version
FL Studio Producer Edition Crack 2025 Full Version
tahirabibi60507
 
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AIScaling GraphRAG:  Efficient Knowledge Retrieval for Enterprise AI
Scaling GraphRAG: Efficient Knowledge Retrieval for Enterprise AI
danshalev
 
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdfMicrosoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
Microsoft AI Nonprofit Use Cases and Live Demo_2025.04.30.pdf
TechSoup
 
Solidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license codeSolidworks Crack 2025 latest new + license code
Solidworks Crack 2025 latest new + license code
aneelaramzan63
 
Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025Avast Premium Security Crack FREE Latest Version 2025
Avast Premium Security Crack FREE Latest Version 2025
mu394968
 
Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025Adobe After Effects Crack FREE FRESH version 2025
Adobe After Effects Crack FREE FRESH version 2025
kashifyounis067
 
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Salesforce Data Cloud- Hyperscale data platform, built for Salesforce.
Dele Amefo
 
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
F-Secure Freedome VPN 2025 Crack Plus Activation  New VersionF-Secure Freedome VPN 2025 Crack Plus Activation  New Version
F-Secure Freedome VPN 2025 Crack Plus Activation New Version
saimabibi60507
 
Download Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With LatestDownload Wondershare Filmora Crack [2025] With Latest
Download Wondershare Filmora Crack [2025] With Latest
tahirabibi60507
 
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...Exploring Code Comprehension  in Scientific Programming:  Preliminary Insight...
Exploring Code Comprehension in Scientific Programming: Preliminary Insight...
University of Hawai‘i at Mānoa
 
Landscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature ReviewLandscape of Requirements Engineering for/by AI through Literature Review
Landscape of Requirements Engineering for/by AI through Literature Review
Hironori Washizaki
 
Download YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full ActivatedDownload YouTube By Click 2025 Free Full Activated
Download YouTube By Click 2025 Free Full Activated
saniamalik72555
 

Oracle APEX migration to 5.1 - Our experience

  • 1. Lino Schildenfeld 26th April 2017 Oracle APEX Our experience – Upgrading to 5.1.1 www.apexRnD.co.nz lschilde.blogspot.com @LinoSchilde [email protected] AUSOUG WA
  • 2. ...in short APEX R&D manager for NZ and AU 10+ years Oracle development experience APEX Blogger and enthusiast NZ APEX meetup organizer Conference speaker Who am I?
  • 5. What we know Themes and templates are responsible for the look and feel of APEX applications. Nine different types: Bradcrumb, Button, Calendar, Label, List, Page, Popup LOV, Region, Report
  • 8. Migration 3.2 -> 4.x 4.x -> 5.0 5.0 -> 5.1.1
  • 9. APEX 5.1.1 release notes https://apex.oracle.com/otn/
  • 10. Our story 20 applications -> 2 mobile most running apex 5.0 about 6 running in 4.2 compatibility mode. apex.oracle.comapex.world
  • 12. Error 1 – Page Item "error":"Ajax call returned server error ORA-20987: APEX - Session state protection violation: This may be caused by manual alteration of a URL containing a checksum or by using a link with an incorrect or missing checksum. If you are unsure what caused this error, please contact the application administrator for assistance. - Contact your application administrator. for ."
  • 13. Error 1 "error":"Ajax call returned server error ORA-20987: APEX - Session state protection violation: This may be caused by manual alteration of a URL containing a checksum or by using a link with an incorrect or missing checksum. If you are unsure what caused this error, please contact the application administrator for assistance. - Contact your application administrator. for ."
  • 14. Error 2 – Interactive report Chrome console throws this error when you select Action- > Filter
  • 15. Error 2 - IR http://lschilde.blogspot.com.au/2017/04/apex-51-migration-compatibility-tips.html 4. problem Bad programming practice example.
  • 16. Error 3 – Application page Uncaught TypeError: Cannot read property 'pageItems' of undefined at i (desktop.min.js:10) at h (desktop.min.js:10) at Object.a.process (desktop.min.js:10) at Object.handleJson [as success] (map_rbgassessment.js:232) at i (jquery-2.2.3.min.js:2) at Object.fireWith [as resolveWith] (jquery-2.2.3.min.js:2) at z (jquery-2.2.3.min.js:4) at HTMLScriptElement.c (jquery-2.2.3.min.js:4) at HTMLScriptElement.dispatch (jquery-2.2.3.min.js:3) at HTMLScriptElement.r.handle (jquery-2.2.3.min.js:3)
  • 17. Error 3 – Application page Simple page with this AJAX call apex.server.process ("deletePins"); deletepins process-> simple as delete RATE_COLLECTION. TMP_PIN_NUMBERS;
  • 18. Error 3 – Application page SOLUTION rewrite AJAX call apex.server.process ( "deletePins", { x01: "test", pageItems: "" }, { success: function( pData ) { console.log("(done) deletePins "); console.info(data); } } );
  • 19. Error 4 – Report region ISSUE: Download is showing additional column with url Report on a page had SQL query for the source SELECT '<a href="javascript:apex.confirm(''Do you want to return this organism as a member?'', ''REVIVE_' || CARRIER_ID || ''');"><img src="#WORKSPACE_IMAGES#red-delete.svg" alt="revive" title="Revive Member"></a>' SHOW demo....
  • 20. Error 4 – Report region SOLUTION Export / Printing Include In Export / Print Yes No -> set to NO defaulted to YES
  • 21. Error 5 – Home breadcrumb link Apex 4.x compatibility apps have an issue with the home breadcrumb not substituting values Rendered URL looks like this: http://agfjsrmw605.agric.wa.gov.au:9004/apex/eds/f? p=&APP_ID.:HOME:&SESSION.
  • 22. Error 5 – Home breadcrumb link http://lschilde.blogspot.com.au/2017/04/apex-51-migration-compatibility-tips.html 2. problem
  • 23. Other ERROR 6: Dialogs for applications running in compatibility: Front dialog not at correct z-index – unable to click due to modal click blocker being in front. (Selenium tests still work) Workaround – add style body .ui-dialog.ui-front{z-index:1001 !important} ERROR 7: Change in Y/N behaviour: The Yes/No field type has changed to Switch – but does not allow null values. Workaround – change to LOV dropdown with Y/N and allow null value.
  • 25. 1 apex.server.process ERROR 1: Simple page when rendered would give this error Uncaught TypeError: Cannot read property 'pageItems' of null at i (mobile.min.js?v=5.1.1.00.08:10) at h (mobile.min.js?v=5.1.1.00.08:10) at Object.a.process (mobile.min.js?v=5.1.1.00.08:10) at toggleFavourite (f? p=106:5:21554343857848::NO:RP,10:P5_STATION_CODE,P5_STATION_NAME,P5_S OURCE_PAGE:BA, Badgingarra,1:200) at <anonymous>:1:1
  • 26. 1 apex.server.process The core of the problem was this JavaScript <script> function toggleFavourite() { apex.server.process ( "togglefavourite", null, { dataType: 'text', success: function(isFavourite) { if(isFavourite=='Y') $ ('#favouritebutton').addClass('favourite'); else $('#favouritebutton').removeClass('favourite'); } } ); } </script> NULL was an issue
  • 27. 2 invalid JSON togglefavourite PROCESS: begin htp.prn('Y'); end; Now this became an invalid JSON as characters need a quotes htp.prn('"Y"');
  • 28. 3 Map error Uncaught ReferenceError: google is not defined at HTMLDivElement.eval (eval at globalEval (jquery- 2.2.3.min.js?v=5.1.1.00.08:2), <anonymous>:39:20) at HTMLDivElement.e (jquery-2.2.3.min.js?v=5.1.1.00.08:3) at HTMLDivElement.dispatch (jquery-2.2.3.min.js? v=5.1.1.00.08:3) at HTMLDivElement.r.handle (jquery-2.2.3.min.js? v=5.1.1.00.08:3) Page 15
  • 29. 3 Map error By changing reference to a a Google JS library from inline on page to page template https://maps.googleapis.com/maps/api/js? key=&GOOGLE_API_KEY.&v=3.26&libraries=weather
  • 30. 4 Menu error bigSlide menu JS Menu did not work after Save or any navigation happened in the application was clicked. Lets have a look at Page with right panel template
  • 31. 4 Menu error problem was in new way APEX template work (since 4.2 version) If you are on page ID 1 and navigate to page ID 5 menu stops working because your page DOM holds more elements with same ID. Why? inspect your DOM when you navigate from page to page <div id="P1" data-role="page" data-apex-page-transition="none" data-apex-popup-transition="none" data-theme="c" data-url <div id="P5" data-role="page" data-apex-page-transition="none" data-apex-popup-transition="none" data-theme="c" data-url..... ..... We had a button on page 0 called Menu with static ID = rightpanel-link. JavaScript was triggering on ID click which was now broken as multiple existed on same page. work around apply logic but with the use of a classes..... insted of $('#rightpanel-link').bigSlide( $('.rightpanel-link').bigSlide(.....
  • 32. 4b Menu error Another menu issue showing blank. Region had a condition not to render on page 101. Due to 101 condition?????? For some reason content was not loaded in.
  • 33. APEX 5.1.1 Mobile link bug Demo - APEX mobile bug I tested this on apex.oracle.com and on new application using 5.1 APEX 5.0 - fine APEX 5.1.1 - broken
  • 35. Future sessions APEX Intro part I – 27 April 2017 http://www.ausoug.org.au/pages/calendar

Editor's Notes

  • #5: The story is we are manager or rookie developers looking for information. Wanting to join and work with APEX.
  • #9: Simple architecture where page requests and submissions made from the browser are tunnelled through the mid-tier to execute in the Oracle Database and returned as HTML responses to the browser. No data manipulation or processing is performed in the mid-tier, instead the APEX engine (inside the Oracle DB) accepts the page, and interacts with the data schemas in the DB. The mid-tier can be either the preferred Oracle REST Data Services (ORDS) running in a Java Server {either Oracle Web-Logic Server (WLS), Oracle Glassfish, or Tomcat} or Oracle Embedded PL/SQL Gateway (EPG) which is part of the Oracle DB, or Oracle HTTP Server (OHS) with mod_plsql. It is common for OHS to be installed in front of ORDS to act as a proxy and serve images.
  • #11: The story is we are manager or rookie developers looking for information. Wanting to join and work with APEX.
  • #12: The story is we are manager or rookie developers looking for information. Wanting to join and work with APEX.
  • #13: If you dig into debug mode you would get some more details where APEX was listing what page item this problem occurred for. Bottom of the problem was some page items had Security attribute Session State Protection set to Check sum required - Session Level and were used in AJAX calls which now cause security errors to be shown. Solution of the problem was to change this as: ISSUE: Session State Protection needed to be updated from Checksum required to Unrestricted.
  • #14: If you dig into debug mode you would get some more details where APEX was listing what page item this problem occurred for. Bottom of the problem was some page items had Security attribute Session State Protection set to Check sum required - Session Level and were used in AJAX calls which now cause security errors to be shown. Solution of the problem was to change this as: ISSUE: Session State Protection needed to be updated from Checksum required to Unrestricted.
  • #15: Interactive report Filter Issue for 4.x compatibility mode When you select Action-&amp;gt; Filter, Chrome console throws this error and it does not display filter options dialog screen: It came down to bad programming practice and simple region Static ID set by developers
  • #16: Solution: After significant amount of hours investigating, what narrowed it down was a desperate page export and comparison between working and non working IR page. Core cause of all problems had nothing to do with Classic Date Picker nor with any JQuery conflict. It came down to bad programming practice and simple region Static ID set by developers. Pages where Filter action had an issue had ID set something similar to:
  • #25: The story is we are manager or rookie developers looking for information. Wanting to join and work with APEX.
  • #27: Replaced with: apex.server.process ( &amp;quot;togglefavourite&amp;quot;, { dataType: &amp;apos;text&amp;apos;, success: function(isFavourite) { if(isFavourite==&amp;apos;Y&amp;apos;) $(&amp;apos;#favouritebutton&amp;apos;).addClass(&amp;apos;favourite&amp;apos;); else $(&amp;apos;#favouritebutton&amp;apos;).removeClass(&amp;apos;favourite&amp;apos;); } } );
  • #28: Replaced with: apex.server.process ( &amp;quot;togglefavourite&amp;quot;, { dataType: &amp;apos;text&amp;apos;, success: function(isFavourite) { if(isFavourite==&amp;apos;Y&amp;apos;) $(&amp;apos;#favouritebutton&amp;apos;).addClass(&amp;apos;favourite&amp;apos;); else $(&amp;apos;#favouritebutton&amp;apos;).removeClass(&amp;apos;favourite&amp;apos;); } } );
  • #29: ........ when SAVE or Back button buton clicked menu would stop working.... Problem was again in new way how APEX treated tempaltes..... if you would navigate over MAP page it would not work if you would navigate directly page would work. By changing reference to a a Google JS library from inline on page to page template https://maps.googleapis.com/maps/api/js?key=&amp;GOOGLE_API_KEY.&amp;v=3.26&amp;libraries=weather Show page 15....
  • #30: ........ when SAVE or Back button buton clicked menu would stop working.... Problem was again in new way how APEX treated tempaltes..... if you would navigate over MAP page it would not work if you would navigate directly page would work. By changing reference to a a Google JS library from inline on page to page template https://maps.googleapis.com/maps/api/js?key=&amp;GOOGLE_API_KEY.&amp;v=3.26&amp;libraries=weather Show page 15....