<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Alain Lacour, auteur/autrice sur dbi Blog</title>
	<atom:link href="https://www.dbi-services.com/blog/author/alain-lacour/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.dbi-services.com/blog/author/alain-lacour/</link>
	<description></description>
	<lastBuildDate>Thu, 16 Oct 2025 06:34:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/05/cropped-favicon_512x512px-min-32x32.png</url>
	<title>Alain Lacour, auteur/autrice sur dbi Blog</title>
	<link>https://www.dbi-services.com/blog/author/alain-lacour/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>APEX IR Subscriptions #JoelKallmanDay</title>
		<link>https://www.dbi-services.com/blog/ir-subscriptions-joelkallmanday/</link>
					<comments>https://www.dbi-services.com/blog/ir-subscriptions-joelkallmanday/#respond</comments>
		
		<dc:creator><![CDATA[Alain Lacour]]></dc:creator>
		<pubDate>Wed, 15 Oct 2025 21:52:50 +0000</pubDate>
				<category><![CDATA[Development & Performance]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[APEX]]></category>
		<category><![CDATA[JoelKallmanDay]]></category>
		<category><![CDATA[orclapex]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=41024</guid>

					<description><![CDATA[<p>Interactive Reports allow to send their content per e-mail on a regular basis thanks to the subscription feature. But this can also raise some security concerns. Let&#8217;s see how to bring some kind of control into the game&#8230; Requirements We developed some reporting solution for an Insurance company based on #orclAPEX. Some of the reports [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/ir-subscriptions-joelkallmanday/">APEX IR Subscriptions #JoelKallmanDay</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Interactive Reports allow to send their content per e-mail on a regular basis thanks to the subscription feature. But this can also raise some security concerns. Let&#8217;s see how to bring some kind of control into the game&#8230;</p>



<h2 class="wp-block-heading" id="h-requirements">Requirements</h2>



<p class="wp-block-paragraph">We developed some reporting solution for an Insurance company based on #orclAPEX. Some of the reports need to be sent on a regular basis, as Excel, to people like executive managers and that&#8217;s where Interactive Reports Subscription comes into the game.<br>As you can imagine, such reports may contain confidential data which should not be sent outside of the company (at least not by the reporting application itself).</p>



<p class="wp-block-paragraph">There are many ways to control the e-mail flows, but in some cases it takes time to implement changes in company global rules. So, let&#8217;s start with small changes until the bigger ones can be implemented&#8230;</p>



<p class="wp-block-paragraph">The need is to let the application Administrators see all IR subscriptions, identify the ones with a target e-mail address outside of the company and delete them.</p>



<h2 class="wp-block-heading" id="h-implementation">Implementation</h2>



<p class="wp-block-paragraph">Prior to use of subscription, e-mail server must be configured at APEX instance level.</p>



<p class="wp-block-paragraph">First we need to build the query of the report. To do so, let&#8217;s identify the APEX views which can provide the required information about the IR subscription within the APEX_DICTIONARY.<br>We are looking for information within the application, so view name will start by <br>APEX_APPLICATION_&#8230;<br>The reports are located in application pages, so view name will add as following APEX_APPLICATION_PAGE_&#8230;<br>Within the page we are looking for the Interactive Report <br>APEX_APPLICATION_PAGE_IR_&#8230;<br>And for the Interactive Report, Subscription definition is required: <strong>APEX_APPLICATION_PAGE_IR_SUB</strong></p>



<p class="wp-block-paragraph">The structure of the reports pages in scope is basic and contains only one Interactive Report. The name of the page is enough to identify the report in the list, so the <strong>APEX_APPLICATION_PAGES</strong> view needs to be joined. <br>There is only one workspace, so there is no need to identify the workspace, but only the application.<br>The query looks as following:</p>



<p class="wp-block-paragraph"><code>SELECT ap.page_id, <br> ap.page_name, <br> apis.notify_id,<br> apis.owner,<br> apis.email_address,<br> apis.email_subject,<br> apis.start_date,<br> apis.notify_internal,<br> apis.end_date,<br> apis.download_format,<br> apis.created_on,<br> apis.status<br>FROM apex_application_pages ap, apex_application_page_ir_sub apis<br>WHERE ap.application_id = v('APP_ID') <br> AND ap.application_id = apis.application_id <br> AND ap.page_id = apis.page_id</code></p>



<p class="wp-block-paragraph">The best place to add the report in the application, is the standard administration reports provided by APEX and already in use:</p>



<p class="wp-block-paragraph"><img fetchpriority="high" decoding="async" width="777" height="607" class="wp-image-41027" style="width: 600px" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/AdministrationReports.png" alt="APEX Administration - Activity Reports added with Report Subscriptions" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/AdministrationReports.png 777w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/AdministrationReports-300x234.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/AdministrationReports-768x600.png 768w" sizes="(max-width: 777px) 100vw, 777px" /><br> <br>The report output is an Interactive Report in a Modal Dialog like the other Administration reports. We use field highlighting to identify e-mail addresses outside of company domain &#8230;<br><img decoding="async" width="1945" height="235" class="wp-image-41028" style="width: 1200px" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/NewReport.png" alt="Report subscriptions sample entry with highlighted e-mail address" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/NewReport.png 1945w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/NewReport-300x36.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/NewReport-1024x124.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/NewReport-768x93.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/NewReport-1536x186.png 1536w" sizes="(max-width: 1945px) 100vw, 1945px" /></p>



<p class="wp-block-paragraph">Let&#8217;s check for a blog within the community to see how to add the delete column:<br><a href="https://vinish.dev/create-delete-row-button-for-interactive-report-in-oracle-apex">https://vinish.dev/create-delete-row-button-for-interactive-report-in-oracle-apex</a></p>



<p class="wp-block-paragraph">The deletion procedure is <a href="https://docs.oracle.com/en/database/oracle/apex/24.1/aeapi/DELETE_SUBSCRIPTION-Procedure.html#GUID-D0C11FBE-7A85-44B2-A759-80313F6AD534">DELETE_SUBSCRIPTION</a> given by the <a href="https://docs.oracle.com/en/database/oracle/apex/24.1/aeapi/APEX_IR.html">APEX_IR</a> PL/SQL API package. The required <code>subscription_id</code> parameter is given by the <code>notify_id</code> field in the <code>apex_application_page_ir_sub</code> view.</p>



<p class="wp-block-paragraph">And the JavaScript Confirmation message looks like this:<br><img decoding="async" width="286" height="145" class="wp-image-41029" style="width: 300px" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/Confirmation.png" alt="Deletion confirmation message"><br>thanks to following parameters:<br><img loading="lazy" decoding="async" width="1302" height="662" class="wp-image-41044" style="width: 600px" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ConfirmationSetup.png" alt="Deletion confirmation message" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ConfirmationSetup.png 1302w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ConfirmationSetup-300x153.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ConfirmationSetup-1024x521.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2025/10/ConfirmationSetup-768x390.png 768w" sizes="auto, (max-width: 1302px) 100vw, 1302px" /></p>



<h2 class="wp-block-heading" id="h-conclusion">Conclusion</h2>



<p class="wp-block-paragraph">With some basic add-on, based on APEX views and PL/SQL APIs it is easy to provide monitoring and control upon Interactive Report Subscriptions within an application.<br>I hope this helps you to start with such requirements&#8230;<br>&#8230; enjoy APEX development</p>
<p>L’article <a href="https://www.dbi-services.com/blog/ir-subscriptions-joelkallmanday/">APEX IR Subscriptions #JoelKallmanDay</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/ir-subscriptions-joelkallmanday/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Doc.SERIES – The « User Friendly » ECM solution</title>
		<link>https://www.dbi-services.com/blog/doc-series-the-user-friendly-ecm-solution/</link>
					<comments>https://www.dbi-services.com/blog/doc-series-the-user-friendly-ecm-solution/#respond</comments>
		
		<dc:creator><![CDATA[Alain Lacour]]></dc:creator>
		<pubDate>Fri, 17 Nov 2023 10:15:59 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Enterprise content management]]></category>
		<category><![CDATA[Doc.SERIES]]></category>
		<category><![CDATA[ECM]]></category>
		<category><![CDATA[MODULAR]]></category>
		<category><![CDATA[OCR]]></category>
		<category><![CDATA[RAD/LAD]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=29433</guid>

					<description><![CDATA[<p>There are several Electronic Content Management tools (ECM) on the market that are very powerful in their functionalities but are not always easy to configure or maintain, particularly if the size of your company does not allow for a large IT department. However, a good document management in a company is a necessity to: &#8211; [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/doc-series-the-user-friendly-ecm-solution/">Doc.SERIES – The « User Friendly » ECM solution</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="673" height="175" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-1-1.png" alt="" class="wp-image-29471" style="aspect-ratio:3.8457142857142856;width:315px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-1-1.png 673w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-1-1-300x78.png 300w" sizes="auto, (max-width: 673px) 100vw, 673px" /></figure>



<p class="wp-block-paragraph">There are several Electronic Content Management tools (ECM) on the market that are very powerful in their functionalities but are not always easy to configure or maintain, particularly if the size of your company does not allow for a large IT department.</p>



<p class="wp-block-paragraph">However, a good  document management in a company is a necessity to:</p>



<p class="wp-block-paragraph">&#8211; Avoid administrative pitfalls</p>



<p class="wp-block-paragraph">&#8211; Optimize the sales process, personnel management, purchasing management, etc.</p>



<p class="wp-block-paragraph"><strong><a href="https://www.doc-series.ch">Doc.SERIES</a></strong> combines <strong>simplicity of use</strong> with the <strong>power of configuration</strong>. Without being as powerful and expensive as a solution like <a href="https://www.dbi-services.com/technologies/opentext-documentum/"><strong>Documentum</strong> </a>or <strong><a href="https://www.dbi-services.com/testimonials/precitrame/#solution">Alfresco</a></strong>, this <strong>ECM</strong> solution perfectly meets the needs of SME – SMI type companies for such kind of application.</p>



<p class="wp-block-paragraph">This is the first blog from a series that will describe the different functionalities and artefacts used in a Doc.SERIES application deployment.  </p>



<p class="wp-block-paragraph"> </p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="165" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-2-1024x165.png" alt="" class="wp-image-29473" style="aspect-ratio:6.206060606060606;width:452px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-2-1024x165.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-2-300x48.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-2-768x124.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-2.png 1088w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="262" height="287" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture1.png" alt="" class="wp-image-29436" /></figure>



<p class="wp-block-paragraph">The <strong><a href="https://www.doc-series.ch">Doc.SERIES</a></strong> solution uses a <strong>“modular” architecture structure</strong>. It is structured around a main module, <strong>Doc.ECM</strong>, onto which various specialized modules are added. In other words, <strong>the user only uses and pays for the modules he needs</strong>.</p>



<p class="wp-block-paragraph">Let&#8217;s do a quick presentation of the solution and its modules.</p>



<p class="wp-block-paragraph"> </p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="1017" height="175" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-3.png" alt="" class="wp-image-29474" style="aspect-ratio:5.811428571428571;width:481px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-3.png 1017w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-3-300x52.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-3-768x132.png 768w" sizes="auto, (max-width: 1017px) 100vw, 1017px" /></figure>



<p class="wp-block-paragraph"><strong> Doc.ECM</strong></p>



<p class="wp-block-paragraph"><strong>Doc.ECM</strong> being the heart of the system, it is the only mandatory module to be able to use the tool. It will manage all your document management processes. It can work very well independently, without any other module being installed.</p>



<p class="wp-block-paragraph">I will come back to this module more in details.</p>



<p class="wp-block-paragraph"><strong>Doc.Capture</strong></p>



<p class="wp-block-paragraph">The <strong>Doc.Capture</strong> module is used to automate the digitization of your documents via an OCR process (Optical Character Recognition).</p>



<p class="wp-block-paragraph"><strong>Doc.Convert</strong></p>



<p class="wp-block-paragraph">The <strong>Doc.Convert</strong> module allows you to scan a large quantity of documents into PDF format, including image type documents (JPEG, TIFF, etc.)</p>



<p class="wp-block-paragraph"><strong>Doc.Printer</strong></p>



<p class="wp-block-paragraph">The <strong>Doc.Printer</strong> module allows you to send all types of documents from your business applications to <strong>Doc.ECM</strong>.</p>



<p class="wp-block-paragraph"><strong>Doc.Loader</strong></p>



<p class="wp-block-paragraph">The <strong>Doc.Loader</strong> module is a tool that allows you to quickly transfer, scan, and hierarchize documents saved in directories to <strong>Doc.ECM</strong>.</p>



<p class="wp-block-paragraph"><strong>Doc.Mobility</strong></p>



<p class="wp-block-paragraph"><strong>Doc.Mobility</strong> is the module of the <strong><a href="https://www.doc-series.ch">Doc.SERIES</a></strong> solution that allow you to scan, validate or search documents from a tablet, smartphone or any other mobile device.</p>



<p class="wp-block-paragraph"><strong>Doc.Import</strong></p>



<p class="wp-block-paragraph"><strong>Doc.Import</strong> is the module that will allow you to automatically import documents saved in a specific folder into <strong>Doc.ECM.</strong></p>



<p class="wp-block-paragraph"><strong>Doc.Office</strong></p>



<p class="wp-block-paragraph"> This module will allow you to send your documents directly to <strong>Doc.ECM</strong> via your Office tools.       </p>



<p class="wp-block-paragraph"><strong>Doc.Desktop</strong></p>



<p class="wp-block-paragraph">This last module allows you to directly export documents from Windows Explorer or your Windows Desktop to <strong><a href="https://www.doc-series.ch">Doc.SERIES</a></strong> or other applications such as CRM, Accounting Solution, etc&#8230;</p>



<p class="wp-block-paragraph"> </p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="102" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-4-1024x102.png" alt="" class="wp-image-29475" style="aspect-ratio:10.03921568627451;width:779px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-4-1024x102.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-4-300x30.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-4-768x76.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-4-1536x153.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-4.png 1762w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">As described above, the heart of the <a href="https://www.doc-series.ch"><strong>Doc.S</strong>ERIES</a> solution is the <strong>Doc.ECM</strong> module. Ergonomic, intuitive and complete, it can operate independently, without the support of other modules.</p>



<p class="wp-block-paragraph"><strong>The User Interface</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="752" height="412" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture11.png" alt="" class="wp-image-29452" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture11.png 752w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture11-300x164.png 300w" sizes="auto, (max-width: 752px) 100vw, 752px" /></figure>



<p class="wp-block-paragraph">As you can see, the main interface of the application consists of 3 main parts:</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="172" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-6-1024x172.png" alt="" class="wp-image-29477" style="aspect-ratio:5.953488372093023;width:554px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-6-1024x172.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-6-300x50.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-6-768x129.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-6-1536x258.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-6-2048x343.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><strong>Applications Menus</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="63" height="225" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture12.png" alt="" class="wp-image-29453" /></figure>



<ul class="wp-block-list">
<li>Each user may or may not have access to the different menus of the application.</li>



<li>The rights on the menus are completely and very easily configurable according to the different user profiles that you define.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="472" height="551" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture13.png" alt="" class="wp-image-29454" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture13.png 472w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture13-257x300.png 257w" sizes="auto, (max-width: 472px) 100vw, 472px" /></figure>



<ul class="wp-block-list">
<li>The Menu management for application administrators is done via a dialog box. No command line are needed.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="752" height="341" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture14.png" alt="" class="wp-image-29455" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture14.png 752w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture14-300x136.png 300w" sizes="auto, (max-width: 752px) 100vw, 752px" /></figure>



<p class="wp-block-paragraph"><strong>The Search Interface</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="687" height="67" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture15.png" alt="" class="wp-image-29456" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture15.png 687w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture15-300x29.png 300w" sizes="auto, (max-width: 687px) 100vw, 687px" /></figure>



<ul class="wp-block-list">
<li><strong>Doc.ECM</strong> uses a very powerful, easy-to-use, multi-criteria search engine that can scan thousands of documents and their content very quickly.</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="436" height="322" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture16.png" alt="" class="wp-image-29457" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture16.png 436w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture16-300x222.png 300w" sizes="auto, (max-width: 436px) 100vw, 436px" /></figure>



<ul class="wp-block-list">
<li>The search can be global or more targeted.</li>
</ul>



<p class="wp-block-paragraph"><strong>The Document Management Interface</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="752" height="397" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture17.png" alt="" class="wp-image-29458" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture17.png 752w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture17-300x158.png 300w" sizes="auto, (max-width: 752px) 100vw, 752px" /></figure>



<ul class="wp-block-list">
<li>This is the main document management dashboard.</li>



<li>It mainly consists of contextual business-oriented “Document baskets”.</li>



<li>Document management is done through flows moving the document from one status to another.</li>



<li>It is intuitive and easily customizable by each user.</li>



<li>It gives the possibility of displaying information on document distribution flows.</li>



<li>It can display statistics or reports regarding document activity.</li>
</ul>



<p class="wp-block-paragraph">  <strong>Adding a new document</strong></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="752" height="380" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture18.png" alt="" class="wp-image-29459" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture18.png 752w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Picture18-300x152.png 300w" sizes="auto, (max-width: 752px) 100vw, 752px" /></figure>



<ul class="wp-block-list">
<li>Add a new document using a drag / drop action.</li>



<li>Complete the metadata manually or using an automatic process based on a RAD/LAD technology.</li>
</ul>



<p class="wp-block-paragraph"> </p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="553" height="175" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-5.png" alt="" class="wp-image-29476" style="aspect-ratio:3.16;width:279px;height:auto" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-5.png 553w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/11/Txt-5-300x95.png 300w" sizes="auto, (max-width: 553px) 100vw, 553px" /></figure>



<p class="wp-block-paragraph">The <strong><a href="https://www.doc-series.ch">Doc.SERIES</a></strong> ECM solution is a good mix between a &#8220;User Friendly&#8221; use and a complex document management. </p>



<p class="wp-block-paragraph">One of his strongest advantages is that the handling of the tool is really easy to do and it could be used in all the company services thanks to the Mobility functionalities. </p>



<p class="wp-block-paragraph">In conclusion, to use this solution gives your company a major asset in all the document management tasks that costs energy, money and workload. </p>



<p class="wp-block-paragraph">A &#8220;must-have&#8221;&#8230;</p>



<p class="wp-block-paragraph">Publisher Info <em><strong>@Doc.SERIES</strong></em> : https://www.doc-series.ch</p>
<p>L’article <a href="https://www.dbi-services.com/blog/doc-series-the-user-friendly-ecm-solution/">Doc.SERIES – The « User Friendly » ECM solution</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/doc-series-the-user-friendly-ecm-solution/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>APEX/ORDS 23.x &#8211; DispatcherNotFoundException</title>
		<link>https://www.dbi-services.com/blog/apex-ords-23-x-dispatchernotfoundexception/</link>
					<comments>https://www.dbi-services.com/blog/apex-ords-23-x-dispatchernotfoundexception/#comments</comments>
		
		<dc:creator><![CDATA[Alain Lacour]]></dc:creator>
		<pubDate>Tue, 31 Oct 2023 21:54:49 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Development & Performance]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[APEX]]></category>
		<category><![CDATA[ORDS]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=29025</guid>

					<description><![CDATA[<p>The aim of that blog is to look into Oracle REST Data Services (ORDS) 23.x error raised when setting up for APEX 23.1. This is following some experience at a customer who wanted to move to latest version of ORDS with APEX 23.1, in late 2023, and ran into an issue. If you have encountered [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-ords-23-x-dispatchernotfoundexception/">APEX/ORDS 23.x &#8211; DispatcherNotFoundException</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">The aim of that blog is to look into <a href="https://www.oracle.com/database/technologies/appdev/rest.html" target="_blank" rel="noreferrer noopener">Oracle REST Data Services (ORDS)</a> 23.x error raised when setting up for APEX 23.1.</p>



<p class="wp-block-paragraph">This is following some experience at a customer who wanted to move to latest version of ORDS with APEX 23.1, in late 2023, and ran into an issue.</p>



<p class="wp-block-paragraph">If you have encountered similar error as below, when trying to run ORDS 23.x standalone for APEX 23.1, you will find a resolution and more details in this blog:<br><img loading="lazy" decoding="async" width="1614" height="744" class="wp-image-29027" style="width: 2500px" src="http://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.44.10.png" alt="" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.44.10.png 1614w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.44.10-300x138.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.44.10-1024x472.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.44.10-768x354.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.44.10-1536x708.png 1536w" sizes="auto, (max-width: 1614px) 100vw, 1614px" /></p>



<h3 class="wp-block-heading" id="h-context">Context</h3>



<p class="wp-block-paragraph">&#8211; APEX 23.1 is installed first on Oracle DB 19.16 at PDB level without error<br>&#8211; ORDS 23.3 binaries are installed on Oracle Linux 8 from the yum package provided by Oracle ($ORDS_CONFIG=/etc/ords/config and $ORDS_BASE=/usr/local/bin)</p>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">ORDS was installed with following command line:<br><code>$/usr/local/bin/ords --config $ORDS_CONFIG install<br><code>ORDS: Release 23.3 Production on Fri Oct 27 09:38:20 2023</code><br><code>Copyright (c) 2010, 2023, Oracle.<br>Configuration:<br>   /etc/ords/config/The configuration folder /etc/ords/config does not contain any configuration files.<br> <br> Oracle REST Data Services - Interactive Install<br> <br> Enter a number to select the type of installation<br> [1] Install or upgrade ORDS in the database only<br> [2] Create or update a database pool and install/upgrade ORDS in the database<br> [3] Create or update a database pool only<br> Choose [2]: 2<br> Enter a number to select the database connection type to use<br> [1] Basic (host name, port, service name)<br> [2] TNS (TNS alias, TNS directory)<br> [3] Custom database URL<br> Choose [1]: 2<br> Enter the TNS location: /u01/app/oracle/product/network/admin<br> Enter a number to select the TNS Network alias to use<br> [1] PDB1 …SERVICE_NAME=pdb1)))<br> [2] PDB2 …SERVICE_NAME=pdb2)))<br> Choose [1]: 1<br> Provide database user name with administrator privileges.<br> Enter the administrator username: ORDS_INSTALL_ADMIN<br> Enter the database password for ORDS_INSTALL_ADMIN:<br> Connecting to database user: ORDS_INSTALL_ADMIN url:<br> jdbc:oracle:thin:@PDB1?TNS_ADMIN=/u01/app/oracle/product/network/admin<br> <br> Retrieving information.<br> Connecting to database user: ORDS_PUBLIC_USER url:<br> jdbc:oracle:thin:@PDB1?TNS_ADMIN=/u01/app/oracle/product/network/admin<br> Enter a number to select additional feature(s) to enable:<br> [1] Database Actions (Enables all features)<br> [2] REST Enabled SQL and Database API<br> [3] REST Enabled SQL<br> [4] Database API<br> [5] None<br> Choose [1]: 1<br> Enter a number to configure and start ORDS in standalone mode<br> [1] Configure and start ORDS in standalone mode<br> [2] Skip<br> Choose [1]: 1<br> Enter a number to select the protocol<br> [1] HTTP<br> [2] HTTPS<br> Choose [1]: 1<br> Enter the HTTP port [8080]: 8080<br> Enter the APEX static resources location: /u01/app/oracle/product/apex/images</code></code></p>



<p class="wp-block-paragraph">As per standard installation ORDS was installed after APEX and all <strong>Database Actions</strong> have been deployed. </p>



<h3 class="wp-block-heading" id="h-issue">Issue</h3>



<p class="wp-block-paragraph">Unfortunately ORDS is providing a <strong>404</strong> error when trying to access APEX from the URL:<br><code>http://mywebappserver:8080/ords/apex</code></p>



<p class="wp-block-paragraph">Also when accessing the ORDS landing page with following URL, APEX is unavailable:<br><code>http://mywebappserver:8080/ords/_landing</code></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="963" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.48.44-1024x963.png" alt="" class="wp-image-29029" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.48.44-1024x963.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.48.44-300x282.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.48.44-768x723.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.48.44-1536x1445.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.48.44.png 1624w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading" id="h-investigation">Investigation</h3>



<p class="wp-block-paragraph">ORDS is returning <strong>404</strong> for different errors as no handler is defined by default. Also looking into the Jetty log files is not showing any error details. The only option left, in order to have more information about the error behind the scene, is to <strong>print debug information to screen</strong> asking ORDS to return details. This is enabled by updating the ORDS configuration file <code>pool.xml</code> for the database connection to APEX in folder <code>$ORDS_CONFIG/databases/default</code> adding entry <code>debug.printDebugToScreen</code> as following: </p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?--&amp;gt;

&amp;lt;properties&amp;gt;
&amp;lt;comment&amp;gt;Saved on Fri Oct 27 09:41:18 UTC 2023&amp;lt;/comment&amp;gt;
  &amp;lt;entry key=&quot;db.connectionType&quot;&amp;gt;tns&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;db.tnsAliasName&quot;&amp;gt;PDB1&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;db.tnsDirectory&quot;&amp;gt;/u01/app/oracle/product/network/admin&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;db.username&quot;&amp;gt;ORDS_PUBLIC_USER&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;feature.sdw&quot;&amp;gt;true&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;restEnabledSql.active&quot;&amp;gt;true&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;debug.printDebugToScreen&quot;&amp;gt;true&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;security.requestValidationFunction&quot;&amp;gt;ords_util.authorize_plsql_gateway&amp;lt;/entry&amp;gt;
&amp;lt;/properties&amp;gt;
</pre></div>


<p class="wp-block-paragraph">This requires a restart of ORDS and provides further details when accessing the apex URL in the web browser:</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="386" data-id="29034" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.58.05-1024x386.png" alt="" class="wp-image-29034" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.58.05-1024x386.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.58.05-300x113.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.58.05-768x290.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.58.05-1536x579.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-07.58.05-2048x772.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p class="wp-block-paragraph">The Java Stack Trace provided is showing some <strong>DispatcherNotFoundException</strong> which may not be very specific or helpful at a first glance. At least it gives some hint that ORDS is not finding a way to dispatch request towards the requested apex target.</p>



<h3 class="wp-block-heading" id="h-resolution">Resolution</h3>



<p class="wp-block-paragraph">When checking the configuration file <code>pool.xml</code> and comparing to previous installation (with ORDS 22.x), it shows there is one entry missing for <code>plsql.gateway.mode</code> that needs to be set to value <strong>proxied</strong> and added as following:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;
&amp;lt;!--?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?--&amp;gt;

&amp;lt;properties&amp;gt;
&amp;lt;comment&amp;gt;Saved on Fri Oct 27 09:41:18 UTC 2023&amp;lt;/comment&amp;gt;
  &amp;lt;entry key=&quot;db.connectionType&quot;&amp;gt;tns&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;db.tnsAliasName&quot;&amp;gt;PDB1&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;db.tnsDirectory&quot;&amp;gt;/u01/app/oracle/product/network/admin&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;db.username&quot;&amp;gt;ORDS_PUBLIC_USER&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;feature.sdw&quot;&amp;gt;true&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;restEnabledSql.active&quot;&amp;gt;true&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;plsql.gateway.mode&quot;&amp;gt;proxied&amp;lt;/entry&amp;gt;
  &amp;lt;entry key=&quot;security.requestValidationFunction&quot;&amp;gt;ords_util.authorize_plsql_gateway&amp;lt;/entry&amp;gt;
&amp;lt;/properties&amp;gt;
</pre></div>


<p class="wp-block-paragraph">This can also be achieved with following command:<br><code>ords --config $ORDS_CONFIG config --db-pool default set plsql.gateway.mode proxied</code><br>The proxied mode is required as requests from ORDS will connect through the DB connection pool using ORDS_PUBLIC_USER who ever the end user connecting on APEX will be.<br>More information about proxy user can be found on <a href="https://asktom.oracle.com/pls/apex/asktom.search?tag=proxy-users">AskTOM</a>.<br>After restarting ORDS in standalone mode APEX is finally accessible.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="747" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-08.13.26-1024x747.png" alt="" class="wp-image-29036" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-08.13.26-1024x747.png 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-08.13.26-300x219.png 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-08.13.26-768x561.png 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-08.13.26-1536x1121.png 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/10/Screenshot-2023-10-20-at-08.13.26.png 1814w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">This was tested with ORDS 23.2.3 with same result as well as with ORDS 23.1.</p>



<h3 class="wp-block-heading" id="h-conclusion">Conclusion</h3>



<p class="wp-block-paragraph">I hope this blog will help you to finalize your ORDS 23.x configuration in standalone for use as APEX 23.x gateway, since both are linked according to the documentation.<br>It would be good to know if there is a specific reason for not setting that parameter as in previous version. If so, documentation should also be updated accordingly. <a href="https://www.thatjeffsmith.com/about/">JeffSmith</a> feel free to provide some feedback.<br>Enjoy APEX and ORDS!</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-ords-23-x-dispatchernotfoundexception/">APEX/ORDS 23.x &#8211; DispatcherNotFoundException</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/apex-ords-23-x-dispatchernotfoundexception/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>APEX Connect 2023 (Day 2)</title>
		<link>https://www.dbi-services.com/blog/apex-connect-2023-day-2/</link>
					<comments>https://www.dbi-services.com/blog/apex-connect-2023-day-2/#respond</comments>
		
		<dc:creator><![CDATA[Alain Lacour]]></dc:creator>
		<pubDate>Thu, 04 May 2023 18:46:38 +0000</pubDate>
				<category><![CDATA[Development & Performance]]></category>
		<category><![CDATA[APEX]]></category>
		<category><![CDATA[APEX connect]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ORDS]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=24974</guid>

					<description><![CDATA[<p>After the Keynote about “Oracle Database 23c &#8211; the developers release!” by Connor Mc Donald where he presented all the newest features of Oracle 23c Developer release, I decided to attend presentations on following topics:– APEX hidden gems &#8211; Template Directives– Authentication management over many applications– Futuristic SQL: Making the Impossible Possible– APEX-Item-Plugin Development for [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2023-day-2/">APEX Connect 2023 (Day 2)</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">After the Keynote about “Oracle Database 23c &#8211; the developers release!” by Connor Mc Donald where he presented all the newest features of Oracle 23c Developer release, I decided to attend presentations on following topics:<br>– APEX hidden gems &#8211; Template Directives<br>– Authentication management over many applications<br>– Futuristic SQL: Making the Impossible Possible<br>– APEX-Item-Plugin Development for Forms and Interactive Grids<br>– Deconstructing the APEX Application Development Lifecycle Paper<br>– APEX Page Items in details</p>



<p class="wp-block-paragraph">Beside the presentations I also had the privilege to have a 1:1 session with Florian Grasshoff from the APEX development Team as well as Connor Mc Donald.</p>



<h3 class="wp-block-heading">APEX hidden gems &#8211; Template Directives</h3>



<p class="wp-block-paragraph">The introduction of Universal Tehem was a game changer in the way APEX is managing the UI by using Default settings, Theme Styles and Templates.<br>Until now the way to make templates dynamic was usage of specific JavaScript frameworks.<br>Changing the the display of APEX applications can be done by manipulating HTML in SQL, by processors, by template manipulation (i.e. AOP Angular expression) or by template directives. The template directives allow to add HTML expressions on columns which simplifies SQL, is more secure and improves performance.<br>The directives can also be used in e-mail templates.<br>With APEX 23.1 and the introduction of Template Components there is an additional way to change templates from any kind of display you could find in the internet as they are flexible plug-inswhich can even be cascaded.<br>Sound like limits have been pushed further&#8230;</p>



<h3 class="wp-block-heading">Authentication management over many applications</h3>



<p class="wp-block-paragraph">With a growing number of APEX applications combined with a growing number of users, the Authentication needs to be revisited. So from standard APEX authentication with standard roles it must move to SSO and central role management in order to make it easier for developers and for the business to manage access.<br>The solution presented is based on Social Sign-in Authentication scheme combined with role management base on tables within a database a packages for the manipulation.<br>Thus a specific landing page could be created to give end user access to only the applications they need from a central point.<br>Also the user access management is done with an APEX application.</p>



<h3 class="wp-block-heading">Futuristic SQL: Making the Impossible Possible</h3>



<p class="wp-block-paragraph">To track sport performances, shopping distribution or car refueling different types of functions can be used in the Oracle database in order to improve the SQL.<br>Here the list of the ones presented:<br>&#8211; ROLLUP<br>&#8211; CUBE<br>&#8211; GROUPING SETS<br>&#8211; PARTITION BY<br>&#8211; RANK<br>&#8211; MAX<br>&#8211; KEEP<br>&#8211; WITH<br>&#8211; AVG<br>&#8211; MATCH_RECONIZE<br>&#8211; LISTAGG<br>&#8211; SQL Macro<br>&#8211; ROW_NUMBER<br>&#8211; OVER<br>&#8211; CELL with MODEL<br>In fact non of these a futuristic, as except SQL Macro which is 3 years old, most are available for 9 years and even more that 20 years. Please check the Oracle DB documentation to know more about those very useful tools.</p>



<h3 class="wp-block-heading">APEX-Item-Plugin Development for Forms and Interactive Grids</h3>



<p class="wp-block-paragraph">The main advantage of Plug-ins is that they are reusable. But development effort must be considered as well as security and compatibility when it comes to third party plug-ins.<br>Development of APEX Plug-ins requires knowledge in at least following domains:<br>&#8211; PL/SQL<br>&#8211; HTML5<br>&#8211; JavaScript / CSS<br>Plug-ins are defined in Shared components and the keys elements to know and implement are the callbacks whether it is about Render procedure, Metadata, AJAX or Validations.<br>Item plug-ins can be used for Page items as well as Interactive Grid columns.<br>An example was given with an Item plug-in rendering QR codes.</p>



<h3 class="wp-block-heading">Deconstructing the APEX Application Development Lifecycle Paper</h3>



<p class="wp-block-paragraph">The last version of the <a href="https://www.oracle.com/a/tech/docs/apex-lifecycle-management-v3.pdf" target="_blank" rel="noreferrer noopener">APEX Application Development Lifecycle Paper</a> was released in October 2022. It provides guidelines on the lifecycle management for APEX applications.<br>Use of tools like GIT, liquibase (for database changes management), SQLcl (for the APEX application export/import) and testing tools like cypress for the UI and utPLSQL for the DB code.<br>I would recommand , in addition to have a look at <a href="https://lct.software/" target="_blank" rel="noreferrer noopener">LCT</a> tool for the UI testing which was presented in another session.</p>



<h3 class="wp-block-heading">APEX Page Items in details</h3>



<p class="wp-block-paragraph">Page items are part of APEX since the beginning. Some have been added, some have been replaced, but most have evolved. The following items have been presented with their main changes:<br>&#8211; Textfield<br>&#8211; Date Picker (also changing with APEX 23.1)<br>&#8211; Textarea<br>&#8211; Select List<br>&#8211; Autocomplete<br>&#8211; Popup LOV<br>&#8211; Checkbox<br>&#8211; Checkbox Group<br>&#8211; Radio Group<br>Don&#8217;t hesitate to check back in the documentation or the inline help about new/modified features of the page items.</p>



<p class="wp-block-paragraph">That was the final day of APEX Connect 2023 conference. Great organization, great presentations and great people.<br>Hope to see all again on APEX Connect 2024 for the 10th anniversary of the conference.<br>How about you? Are you planning to join?</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2023-day-2/">APEX Connect 2023 (Day 2)</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/apex-connect-2023-day-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>APEX Connect 2023 (Day 1)</title>
		<link>https://www.dbi-services.com/blog/apex-connect-2023-day-1/</link>
					<comments>https://www.dbi-services.com/blog/apex-connect-2023-day-1/#respond</comments>
		
		<dc:creator><![CDATA[Alain Lacour]]></dc:creator>
		<pubDate>Wed, 03 May 2023 17:13:34 +0000</pubDate>
				<category><![CDATA[Development & Performance]]></category>
		<category><![CDATA[APEX]]></category>
		<category><![CDATA[APEX connect]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[ORDS]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/?p=24951</guid>

					<description><![CDATA[<p>This year again the APEX connect conference spans over two days onsite in Berlin, with mixed topics around APEX, like JavaScript, PL/SQL and much more.After the welcome speech and the Keynote about &#8220;22.2, 23.1, and beyond&#8221; by the Oracle APEX Team, I decided to attend presentations on following topics:– How should we design a database? [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2023-day-1/">APEX Connect 2023 (Day 1)</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="24953" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5334-1-1024x768.jpeg" alt="" class="wp-image-24953" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5334-1-1024x768.jpeg 1024w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5334-1-300x225.jpeg 300w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5334-1-768x576.jpeg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5334-1-1536x1152.jpeg 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5334-1-2048x1536.jpeg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="768" height="1024" data-id="24954" src="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5335-768x1024.jpeg" alt="" class="wp-image-24954" srcset="https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5335-768x1024.jpeg 768w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5335-225x300.jpeg 225w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5335-1152x1536.jpeg 1152w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5335-1536x2048.jpeg 1536w, https://www.dbi-services.com/blog/wp-content/uploads/sites/2/2023/05/IMG_5335-scaled.jpeg 1920w" sizes="auto, (max-width: 768px) 100vw, 768px" /></figure>
</figure>



<p class="wp-block-paragraph">This year again the APEX connect conference spans over two days onsite in Berlin, with mixed topics around APEX, like JavaScript, PL/SQL and much more.<br>After the welcome speech and the Keynote about &#8220;22.2, 23.1, and beyond&#8221; by the Oracle APEX Team, I decided to attend presentations on following topics:<br>– How should we design a database? You decide!<br>– IoT and APEX to reduce gas<br>– Automated APEX application deployment with Liquibase and Jenkins <br>– Low Code Testing (LCT) Testing APEX apps is just as easy as creating them<br>– Templates &#8211; Next Generation: Dynamic Templates in 23.1<br>– Multi language application in APEX &#8211; really ease?</p>



<p class="wp-block-paragraph">I also had the chance to give some presentation about ORDS 22.x and the changes it introduces.</p>



<h3 class="wp-block-heading">22.2, 23.1, and beyond:</h3>



<p class="wp-block-paragraph">The APEX Team was growing very fast lately (with taking over <a href="https://www.oracle.com/corporate/acquisitions/foex/" target="_blank" rel="noreferrer noopener">FOEX</a> for example) to be more than 80 people now. This shows that APEX is on the heart of Oracle strategy, also internally for the Global Business Units (GBO).<br>A quick overview of APEX 22.2 new features was given but more interesting, details about APEX 23.1 new features which are not yet available for download:<br>&#8211; Declarative push notifications<br>&#8211; Template components<br>&#8211; Refreshed Object Browser<br>&#8211; SQL Developer Web integration<br>&#8211; Refreshed items (Rich Text Editor, Color Picker)<br>&#8211; Administrator Diggest<br>&#8211; REST Source discovery based on Swagger/Open AI<br>&#8211; Invoke API for REST Data Sources<br>&#8211; Background execution of Page Processes<br>It all looks promising and I&#8217;m looking forward for it to being released outside of <a href="https://apex.oracle.com" target="_blank" rel="noreferrer noopener">apex.oracle.com</a></p>



<h3 class="wp-block-heading">How should we design a database? You decide!</h3>



<p class="wp-block-paragraph">We the example of creating an application to manage international games with the final target to show some league results, based on 2 tables (country, games) some design decisions had to be made and consequences were analyzed.<br>Outcome:<br>&#8211; Use natural keys (like ISO country code) only when codes are standardized. If not use surrogate keys.<br>&#8211; Use check constraints if fixed and small number of values. For all other cases use lookup tables.<br>&#8211; Use columns to store limited number of data of same type related to main entry (e.g. score). For other cases use a separate table.<br>&#8211; Use NULL when no data is stored rather than a default value which could be a valid data for final result (i.e. 0 for the score until the game was played).<br>In order to eas developer&#8217;s work, design guidelines should be created. SQL Developer Data Modeler can be used with Design Rules feature, to do so.</p>



<h3 class="wp-block-heading">IoT and APEX to reduce gas</h3>



<p class="wp-block-paragraph">With expanding CO2 emissions, we need to reconsider our way of consuming fossil energies. The war in Ukraine and the impact it has on the gas price makes it visible on the bill also.<br>Analog gas counters are using magnets to show progress which can be used to add IoT based detection and turn it into digital equipments with traceability features. Thanks to magnet sensor coupled with Raspberry pi pico and some Python software consumption data can be exported in csv files.<br>Those csv files can then be imported into an APEX application which is used to do some dashboarding and cost analysis quite easily.<br>This way some experiments can be done on the heating settings to see how best savings can be done.</p>



<h3 class="wp-block-heading">Automated APEX application deployment with Liquibase and Jenkins</h3>



<p class="wp-block-paragraph"><a href="https://www.liquibase.org/">Liquibase</a> allows to manage and track deployments on databases based on Change Logs and Change Sets. Structure of scripts used to do the changes must be adapted with for example:<br>&#8211; Pre DDL<br>&#8211; DDL<br>&#8211; Post DDL<br>scripts to cover all aspects.<br>Beside the DB code, APEX application code can be managed in GIT and commit to master branch used to trigger deployment with <a href="https://www.jenkins.io/">Jenkins</a>.<br>The link between GIT and Jenkins can be done over web hook based on some specific plugins.<br>Authentication needs to be managed carefully as changes might be required on different databases within the same release.</p>



<h3 class="wp-block-heading">Low Code Testing (LCT) Testing APEX apps is just as easy as creating them</h3>



<p class="wp-block-paragraph"><a href="https://lct.software/">LCT</a> is a tool developed in APEX to test APEX applications.<br>The tool is managing test cases within Worksheets and Test Suites where the definitions are based on the APEX metadata, which makes it very intuitive.<br>It is only testing the UI, not the PL/SQL code.<br>Compared to other testing tools, it is able to handle the context of modal pages and record all states of the application during the test run for later analysis.<br>Based on Docker containers, it&#8217;s footprint is rather small for simple applications. But it also allows to scale up easily to up to 256 containers if required for big applications and multiple parallel testings. It is worth have a look into it if you want to do automated testing of your APEX application.</p>



<h3 class="wp-block-heading">Templates &#8211; Next Generation: Dynamic Templates in 23.1</h3>



<p class="wp-block-paragraph">With APEX 23.1, a new plugin type was introduced: Template components<br>It supports template directives, CSS, JavaScript, declarative images and CLOB.<br>It can be used as:<br>&#8211; Partial region<br>&#8211; Report region<br>&#8211; Interactive Report column<br>Most of it&#8217;s setup is declarative which doesn&#8217;t require any PL/SQL and almost no JavaScript, depending how far you want to personalize it.<br>Some new APPLY WITH feature even allows to combine different plugins within themselves, which makes it even more powerful.</p>



<h3 class="wp-block-heading">Multi language application in APEX &#8211; really ease?</h3>



<p class="wp-block-paragraph">APEX is supporting multi language applications. It is based on translations of the text found in the application but this excludes any data in LOVs  or Read Only items. So that multi language should be integrated in the tables design (at least for lookup tables).<br>APEX allows to export the static text to be translated in XLIF format so it can be given to a specialized service for processing. But, NO CHANGE must be done to the APEX application while the translation file is processed, unless issues will show-up when the translated text will be imported again.<br>Multi language applications are not that strait forward and require some design thoughts from the beginning and attention during development.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2023-day-1/">APEX Connect 2023 (Day 1)</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/apex-connect-2023-day-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ORDS with TNS</title>
		<link>https://www.dbi-services.com/blog/ords-with-tns/</link>
					<comments>https://www.dbi-services.com/blog/ords-with-tns/#respond</comments>
		
		<dc:creator><![CDATA[Alain Lacour]]></dc:creator>
		<pubDate>Wed, 02 Feb 2022 10:09:39 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[ORDS]]></category>
		<category><![CDATA[TNS]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/ords-with-tns/</guid>

					<description><![CDATA[<p>The aim of that blog is to look into Oracle REST Data Services (ORDS) DB connection with TNS. This is following some experience at a customer who wanted to move to latest version of ORDS with APEX 21.2, in late 2021, and run into an issue. For general presentation about ORDS installation please see the [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/ords-with-tns/">ORDS with TNS</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The aim of that blog is to look into <a href="https://www.oracle.com/database/technologies/appdev/rest.html" target="_blank" rel="noopener">Oracle REST Data Services (ORDS)</a> DB connection with TNS. This is following some experience at a customer who wanted to move to latest version of ORDS with APEX 21.2, in late 2021, and run into an issue.<br />
<span id="more-17099"></span><br />
For general presentation about ORDS installation please see the <a href="https://www.dbi-services.com/blog/oracle-rest-data-services-installation-and-configuration/" target="_blank" rel="noopener">blog</a> of my colleague <a href="https://www.dbi-services.com/blog/author/lazhar-felahi/" target="_blank" rel="noopener">Lazhar Felahi</a> on that topic.<br />
&nbsp;<br />
During installation or upgrade of ORDS you have to select the DB connection mode between following values:</p>
<pre class="brush: text; gutter: true; first-line: 1">
Specify the database connection type to use.
Enter number for [1] Basic [2] TNS [3] Custom URL [1]:
</pre>
<p>If you are using DataGuard or RAC, you will have to choose the TNS option [2] in order to benefit from the DB features in terms of availability. I would even recommend to use TNS as general rule, as this is mostly defined and provided by your DBA for connecting your client to the DB.<br />
To make use of TNS you have to provide the service name (TNS Network Alias) and the location of your tnsnames.ora file (TNS folder location) during the setup process.<br />
Until version <a href="https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-2113.html" rel="noopener" target="_blank">21.1.3</a> of ORDS that feature was working nicely.<br />
Unfortunately, starting with version <a href="https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-212.html" rel="noopener" target="_blank">21.2</a> some error is raised when trying to update or newly install ORDS with DB connection over TNS, at the time the connection is used.</p>
<pre class="brush: text; gutter: true; first-line: 1 highlight: [1,2,4,5,8,9]">
oracle.net.resolver.EZConnectResolver.parseExtendedProperties Extended settings parsing failed.
 java.lang.RuntimeException: Invalid character at 24 : 
...
oracle.dbtools.common.logging.JDKLogSink.record IO Error: Invalid connection string format, 
a valid format is: "host:port:sid" (CONNECTION_ID=X8ADepYuRpK1p8FSAKp41Q==),|apex||...,
jdbc:oracle:thin:@myDB?TNS_ADMIN=D:AppOracletns
...
oracle.dbtools.common.logging.JDKLogSink.record The pool named: |apex|| is invalid and will be ignored: 
ORDS was unable to make a connection to the database. 
This can occur if the database is unavailable, the maximum number of sessions has been reached
or the pool is not correctly configured. The connection pool named: |apex|| had the following error(s): 
IO Error: Invalid connection string format, a valid format is: "host:port:sid"
...
</pre>
<p>That issue is still present in versions <a href="https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-2124.html" rel="noopener" target="_blank">21.2.4</a>, <a href="https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-213.html" rel="noopener" target="_blank">21.3</a>, <a href="https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-2131.html" rel="noopener" target="_blank">21.3.1</a> and <a href="https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads-21.4.html" rel="noopener" target="_blank">21.4</a><br />
It was reported to Oracle by opening and SR with the support, by my customer, and a bug was registered: Bug 33583853 &#8211; FAILED TO CONNECT TO USER: ORDS_PUBLIC_USER URL: JDBC:ORACLE:THIN:@MYDB?TNS_ADMIN<br />
Fortunately, there is a workaround in using the option [3] Custom URL, until the bug fix is implemented.<br />
When you make use of that option, you have to build your own Java connection string which looks as following:</p>
<pre class="brush: text; gutter: false; first-line: 1">
jdbc:oracle:thin:@MY_TNS_ALIAS?TNS_ADMIN=D:\Oracle\tns\admin
</pre>
<p>Where MY_TNS_ALIAS is the alias defined in your tnsnames.ora file and D:\Oracle\tns\admin is the path to your tnsnames.ora file (in this case on a Windows server so the &#8221; needs to be doubled). This is working fine on all previously listed ORDS versions.<br />
You can have a look into <a href="https://community.oracle.com/tech/developers/discussion/4490692/ords-with-tns-error-when-trying-to-connect-db-for-apex" rel="noopener" target="_blank">Oracle Community Discussion</a> for details on the testing and the solution.<br />
According to Jeff Smith the bug resolution is provided &#8220;&#8230;before the Groundhog gets his day in PA.&#8221; which is today, February 2nd.<br />
Version <a href="https://www.oracle.com/database/technologies/appdev/rest-data-services-downloads.html" rel="noopener" target="_blank">21.4.1</a> was released.<br />
After testing, I can confirm that this release is fixing the issue and behavior is back to normal. Thanks Oracle for the fix.<br />
Special thanks to <a href="https://www.thatjeffsmith.com/about/" rel="noopener" target="_blank">Jeff Smith</a>, the Oracle product manager of ORDS, for the clarifications given and the follow-up on the bug resolution.<br />
&nbsp;<br />
So if you want to use TNS without the Custom URL, <strong>stay on ORDS version prior to 21.2 or move to version 21.4.1</strong>.<br />
I hope that blog will be helpful, if you run into similar issue. Enjoy ORDS.</p>
<p><strong>Note:</strong> If you are looking for details about licencing please have look into that <a href="https://www.thatjeffsmith.com/archive/2019/04/oracle-sql-developer-and-the-oracle-jdk-in-2019/" rel="noopener" target="_blank">blog</a>.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/ords-with-tns/">ORDS with TNS</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/ords-with-tns/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>APEX Connect 2020 &#8211; Day 1</title>
		<link>https://www.dbi-services.com/blog/apex-connect-2020-day-1/</link>
					<comments>https://www.dbi-services.com/blog/apex-connect-2020-day-1/#respond</comments>
		
		<dc:creator><![CDATA[Alain Lacour]]></dc:creator>
		<pubDate>Sat, 09 May 2020 08:12:44 +0000</pubDate>
				<category><![CDATA[Development & Performance]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[APEX connect 2020]]></category>
		<category><![CDATA[PL/SQL]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/apex-connect-2020-day-1/</guid>

					<description><![CDATA[<p>This year the APEX connect conference goes virtual online, like all other major IT events, due to the pandemic. Unfortunately it spans only over two days with mixed topics around APEX, like JavaScript, PL/SQL and much more. After the welcome speech and the very interesting Keynote about &#8220;APEX 20.1 and beyond: News from APEX Development&#8221; [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2020-day-1/">APEX Connect 2020 &#8211; Day 1</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This year the APEX connect conference goes virtual online, like all other major IT events, due to the pandemic. Unfortunately it spans only over two days with mixed topics around APEX, like JavaScript, PL/SQL and much more. After the welcome speech and the very interesting Keynote about &#8220;APEX 20.1 and beyond: News from APEX Development&#8221; by Carsten Czarski, I decided to attend presentations on following topics:<br />
&#8211; The Basics of Deep Learning<br />
&#8211; “Make it faster”: Myths about SQL performance<br />
&#8211; Using RESTful Services and Remote SQL<br />
&#8211; The Ultimate Guide to APEX Plug-ins<br />
&#8211; Game of Fraud Detection with SQL and Machine Learning</p>
<h3>APEX 20.1 and beyond: News from APEX Development</h3>
<p>Carsten Czarski from the APEX development team shared about the evolution of the latest APEX releases up to 20.1 released on April 23rd.<br />
Since APEX 18.1 there are 2 release per year. There are no major nor minor releases, all are managed at the same level.<br />
Beside those releases bundle PSE to fix critical issues are provided.<br />
From the recent features a couple have retained my attention:<br />
&#8211; Faceted search<br />
&#8211; Wider integration of Oracle TEXT<br />
&#8211; Application backups<br />
&#8211; Session timeout warnings<br />
&#8211; New URL<br />
And more to come with next releases like:<br />
&#8211; Native PDF export<br />
&#8211; New download formats<br />
&#8211; External data sources<br />
A lot to test and enjoy!</p>
<h3>The Basics of Deep Learning</h3>
<p>Artificial Intelligence (AI) is now part of our life mostly without noticing it. Machine learning (ML) is part of AI and Deap Learning (DL) a specific sub-part of ML.<br />
ML is used in different sectors and used for example in:</p>
<ul>
<li>SPAM filters</li>
<li>Data Analytics</li>
<li>Medical Diagnosis</li>
<li>Image recognition</li>
</ul>
<p>and much more&#8230;<br />
DL is integrating automated feature extraction which makes it suited for:</p>
<ul>
<li>Natural Language processing</li>
<li>Speech recognition</li>
<li>Text to Speech</li>
<li>Machine translation</li>
<li>Referencing to Text</li>
</ul>
<p>You can find some example of text generator based on DL with <a href="https://talktotransformer.com/" target="_blank" rel="noopener noreferrer">Talk to transformer</a><br />
It is also heavily used in visual recognition (feature based recognition). ML is dependent on the datasets and preset models used so it&#8217;s key to have a large set of data to cover a wide range of possibilities. DL has made a big step forward with <a href="https://towardsdatascience.com/a-comprehensive-guide-to-convolutional-neural-networks-the-eli5-way-3bd2b1164a53" target="_blank" rel="noopener noreferrer">Convolutional Neural Networks</a> (by Yann Lecun).<br />
DL is based on complex mathematical models in Neural Networks at different levels, which use activation functions, model design, hyper parameters, backpropagation, loss functions, optimzer.<br />
You can learn how it is implemented in image recognition at <a href="https://www.pyimagesearch.com/" target="_blank" rel="noopener noreferrer">pyimagesearch.com</a><br />
Another nice example of DL with reinforcement learning is <a href="https://youtu.be/VMp6pq6_QjI" target="_blank" rel="noopener noreferrer">AI learns to park</a></p>
<h3>“Make it faster”: Myths about SQL performance</h3>
<p>Performance of the Database is a hot topic when it comes to data centric application development like with APEX.<br />
The pillars of DB performance are following:<br />
&#8211; Performance planning<br />
&#8211; Instance tuning<br />
&#8211; SQL tuning<br />
To be efficient performance must be considered at every stage of a project.<br />
Recurring statement is: &#8220;Index is GOOD, full table scan is BAD&#8221;<br />
But when is index better than full table scan? As a rule of thumb you can consider when selectivity is less than 5%<br />
To improve the performance there are also options like:<br />
&#8211; KIWI (Kill It With Iron) where more hardware should solve the performance issue<br />
&#8211; Hints where you cut branches of the optimizer decision tree to force its choice (which is always the less expensive plan)<br />
Unfortunately there is no golden hint able to improve performance whenever it&#8217;s used</p>
<h3>Using RESTful Services and Remote SQL</h3>
<p>REST web services are based on URI returning different types of data like HTML, XML, CSV or JSON.<br />
Those web services are based on <a href="https://www.restapitutorial.com/lessons/httpmethods.html" target="_blank" rel="noopener noreferrer">request methods</a>:</p>
<ul>
<li>POST to insert data</li>
<li>PUT to update/replace data</li>
<li>GET to read data</li>
<li>DELETE to DELETE data</li>
<li>PATCH to update/modify data</li>
</ul>
<p>The integration of web services in APEX allows to make use of data outside of the Oracle database and connect to services like:<br />
&#8211; Jira<br />
&#8211; GitHub<br />
&#8211; Online Accounting Services<br />
&#8211; Google services<br />
&#8211; &#8230;<br />
Web services module on ORDS instance provides extensions on top of normal REST which support APEX out of the box but also enables Remote SQL.<br />
Thanks to that, SQL statement can be sent over REST to the Oracle Database and executed remotely returning the data formatted as per REST standards.</p>
<h3>The Ultimate Guide to APEX Plug-ins</h3>
<p>Even though APEX plug-ins are not trivial to build they have benefits like:<br />
&#8211; Introduction of new functionality<br />
&#8211; Modularity<br />
&#8211; Reusability<br />
which makes them very interesting.<br />
There are already a lot of Plug-ins available which can be found on <a href="https://apex.world/" target="_blank" rel="noopener noreferrer">apex.world</a> or on professional providers like <a href="https://www.foex.at" target="_blank" rel="noopener noreferrer">FOEX</a><br />
What is important to look at with plug-ins are support, quality, security and updates.<br />
The main elements of a plug-in are:<br />
&#8211; Name<br />
&#8211; Type<br />
&#8211; Callbacks<br />
&#8211; Standard attributes<br />
&#8211; Custom attributes<br />
&#8211; Files (CSS, JS, &#8230;)<br />
&#8211; Events<br />
&#8211; Information<br />
&#8211; Help Text<br />
Plug-ins are also a way to provide tools to improve the APEX developer experience like <a href="https://github.com/OraOpenSource/apex-nitro" target="_blank" rel="noopener noreferrer">APEX Nitro</a> or <a href="https://www.foex.at/apex-builder-extension/" target="_blank" rel="noopener noreferrer">APEX Builder extension by FOS</a></p>
<h3>Game of Fraud Detection with SQL and Machine Learning</h3>
<p>With the example of some banking fraud, the investigation method based on deterministic SQL was compared to the method based on probabilistic ML.<br />
Even though results were close on statistics Supervised Machine Learning (looking for patterns to identify the solutions) was giving more accurate ones. In fact, the combination of both methods was giving even better results.<br />
The challenge is to gain acceptance from the business on results produced using help of ML as they are not based on fully explainable rules.<br />
The Oracle database is embedding ML for free with specific package like DBMS_DATA_MINING for several years now.</p>
<p>The day ended with the most awaited session: <strong>Virtual beer!</strong></p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2020-day-1/">APEX Connect 2020 &#8211; Day 1</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/apex-connect-2020-day-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>APEX Connect 2019 &#8211; Day 3</title>
		<link>https://www.dbi-services.com/blog/apex-connect-2019-day-3/</link>
					<comments>https://www.dbi-services.com/blog/apex-connect-2019-day-3/#respond</comments>
		
		<dc:creator><![CDATA[Alain Lacour]]></dc:creator>
		<pubDate>Thu, 09 May 2019 14:20:46 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Database Administration & Monitoring]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/apex-connect-2019-day-3/</guid>

					<description><![CDATA[<p>For the last conference day, after the Keynote about &#8220;JavaScript, Why Should I Care?&#8221; by Dan McGhan , I decided to attend some JavaScript learning sessions to improve myself and presentations on following topics: &#8211; How to hack your APEX App&#8230; (only for testing) &#8211; What you need to know about APEX validations I also [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2019-day-3/">APEX Connect 2019 &#8211; Day 3</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>For the last conference day, after the Keynote about &#8220;JavaScript, Why Should I Care?&#8221; by Dan McGhan , I decided to attend some JavaScript learning sessions to improve myself and presentations on following topics:<br />
&#8211; How to hack your APEX App&#8230; (only for testing)<br />
&#8211; What you need to know about APEX validations</p>
<p>I also got the chance to have a 1:1 talk with Anthony Rayner to expose some wishes about APEX and talk about some issue on interactive grid search.</p>
<h3>JavaScript programming language</h3>
<p>Nowadays being an good APEX developer means being a full stack developer who master different areas:<br />
&#8211; Server side (database, data modeling, SQL, PL/SQL)<br />
&#8211; Client side (HTML, CSS, JavaScript)<br />
So, even JavaScript was weird from the beginning you cannot avoid learning and mastering it. It&#8217;s simply the number 1 most used programming language (thanks to the web). Think APEX Dynamic Actions can solve all issues by hiding the complexity of Java Script just isn&#8217;t always possible anymore. Some statistics show that APEX team is already putting a lot of effort into JavaScript as it is more than 50% of APEX code way ahead from PL/SQL.<br />
A couple of characteristics about JavaScript:<br />
&#8211; It&#8217;s a no variable type language, meaning that the type is not in the variable but rather in the value assigned to it. This can some how be seen as polymorphism.<br />
&#8211; It&#8217;s case sensitive<br />
&#8211; 0 based array index (PL/SQL being a 1 based array index)<br />
&#8211; There are no procedures, only functions<br />
&#8211; Functions can be given other functions as parameter<br />
&#8211; there is one convention: Functions starting with Uppercase are meant to be used with the new operator<br />
While developing JavaScript your best friend are the web browser developer tools which allow to do a lot locally and test it before moving to the server and share with other developers and users.<br />
There are a lot of resources on the internet to support the copy/paste way of work of JavaScript developers, so there are big chance that someone already did what you need. Just take care about licensing.<br />
In APEX JavaScript can be encapsulated in Dynamic Actions, but try to keep that code as short as possible.<br />
Oracle is also providing some very useful free Open Source Java development Toolkit: <a href="https://www.oracle.com/webfolder/technetwork/jet/index.html" target="_blank" rel="noopener noreferrer">JET (Javascript Extension Toolkit)</a><br />
It&#8217;s already integrated in APEX thru the charts.</p>
<h3>How to hack your APEX App&#8230; (only for testing)</h3>
<p>APEX generating web application it&#8217;s exposed to the same dangers than any other web application like SQL injection, XSS (cross site scripting, aso).<br />
There is no excuse to ignore security issues because application is only used on the intranet or you think no one will ever find the issue&#8230;</b><br />
&#8230; Security is the part of the job as a developer. Danger can come from the outside but also the inside with social engineering based hacking.<br />
It&#8217;s very easy to find hacker tools on the internet like Kali Linux, based on Debian, which provides more that 600 tools for penetration testing like for example BEEF (Browser exploitation Framework.<br />
In APEX the golden rule says &#8220;Don&#8217;t turn of escaping on your pages&#8221;.<br />
Don&#8217;t forget &#8220;Security is hard. If it&#8217;s easy you&#8217;re not doing it right&#8221; so don&#8217;r forget it in your project planning.</p>
<h3>What you need to know about APEX validations</h3>
<p>There are 2 types of validations with web applications:<br />
&#8211; Client side<br />
&#8211; Server side<br />
APEX is making use of both and even sometimes combines them but server side is the most used.<br />
Where possible Client side validation should be used as well as it&#8217;s lighter (less network traffic), but be careful as it can be skirt with developer tools as it&#8217;s based on HTML attributes or JavaScript. Tht&#8217;s where Server side validation will be you second line of defense and the database triggers and constraints your very last line of defense.<br />
Validation can make use of data patterns (regular expressions).<br />
Interactive Grid validation can also be improved significantly with Java Script and Dynamic actions fired on value changes and/or on page submission.</p>
<p>There is always more to learn and thanks the community a lot of information is available. So keep sharing.<br />
Enjoy APEX!</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2019-day-3/">APEX Connect 2019 &#8211; Day 3</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/apex-connect-2019-day-3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>APEX Connect 2019 &#8211; Day 2</title>
		<link>https://www.dbi-services.com/blog/apex-connect-2019-day-2/</link>
					<comments>https://www.dbi-services.com/blog/apex-connect-2019-day-2/#respond</comments>
		
		<dc:creator><![CDATA[Alain Lacour]]></dc:creator>
		<pubDate>Wed, 08 May 2019 21:17:36 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Database Administration & Monitoring]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/apex-connect-2019-day-2/</guid>

					<description><![CDATA[<p>The day first started with a 5K fun run. After the Keynote about “APEX: Where we have come from and where we’re heading: Personal insights on Application Express from the Development Team” by John Snyders, Anthony Rayner and Carsten Czarski explaining their work on APEX and some upcoming features, I decided to attend presentations on [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2019-day-2/">APEX Connect 2019 &#8211; Day 2</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>The day first started with a 5K fun run.</p>
<p>After the Keynote about “APEX: Where we have come from and where we’re heading: Personal insights on Application Express from the Development Team” by John Snyders, Anthony Rayner and Carsten Czarski explaining their work on APEX and some upcoming features, I decided to attend presentations on following topics:<br />
– Know your Browser Dev Tools!<br />
– APEX Devops with Database tooling<br />
– Klick, Klick, Test &#8211; Automated Testing for APEX<br />
– Sponsored Session Pitss: Migration from Oracle Forms to APEX &#8211; Approaches compared<br />
– APEX-Actions</p>
<p>Potential upcoming features in APEX 19.2:<br />
&#8211; APEX_EXEC enabled Interactive Grids<br />
&#8211; Enhanced LOV<br />
&#8211; New popup LOV<br />
&#8211; Filter reports</p>
<h3>Know your Browser Dev Tools!</h3>
<p>Every web browser has it&#8217;s own set of developer tools but all of them mainly allow following functionalities:<br />
&#8211; Manipulate HTML in DOM tree<br />
&#8211; Execute JavaScript<br />
&#8211; Apply CSS<br />
&#8211; Client side debugging and logging<br />
&#8211; Analyze network activity<br />
&#8211; Simulate screensize<br />
The most popular and complet set of tools is provided by Google Chrome with:<br />
&#8211; Elements<br />
&#8211; Console<br />
&#8211; Sources<br />
&#8211; Network<br />
&#8211; Performance<br />
&#8211; Memory<br />
&#8211; Application<br />
&#8211; Security<br />
&#8211; Audits<br />
Note that if you want to see console output as well as details of Dynamic Actions from APEX, you need to activate debug mode in your application.</p>
<h3>APEX Devops with Database tooling</h3>
<p>One of the goal of DevOps is to bring Development and Operations to work closer together and make deployment of application smoother.<br />
In order to achieve that 100% automation of follwing tasks is helping a lot:<br />
&#8211; Build<br />
&#8211; Test<br />
&#8211; Release<br />
&#8211; Deploy<br />
This is mainly supported by RESTful services within Oracle, ORDS being the corner stone.<br />
Beside that Jenkins has been replaced by GitLab with better web services support.<br />
Database changes are tracked based in <a href="https://www.liquibase.org" target="_blank" rel="noopener noreferrer">Liquibase</a> integrated and enhanced in SQLcl. Vault is also integrated in SQLcl to ease and automate the password management.<br />
Another target of DevOps is zero downtime. This can be supported with tools like <a href="https://www.consul.io" target="_blank" rel="noopener noreferrer">consul.io</a> and <a href="https://fabiolb.net" target="_blank" rel="noopener noreferrer">fabiolb</a> which permit to dynamically add ORDS servers covered by dynamic load balancing.</p>
<h3>Klick, Klick, Test &#8211; Automated Testing for APEX</h3>
<p>There are lots of automated testing tools on the market but they mostly are restricted to specific web browsers.<br />
The target is to have a solution that fits most of them and allows testing of APEX web applications.<br />
It needs a testing framework to abstract the scenario from underlying tool: <a href="https://codecept.io/" target="_blank" rel="noopener noreferrer">codecept.io</a><br />
The code generated by the testing framework being standardized it can be generated based on APEX metadata analysis with the help of a templating tool: <a href="https://handlebarsjs.com/" target="_blank" rel="noopener noreferrer">handlebars</a><br />
The process is then supported by an APEX application that can retrieve the applications from the workspace and manage the dedicated test scenarios as well as trigger them on docker containers.</p>
<h3>Sponsored Session Pitss: Migration from Oracle Forms to APEX &#8211; Approaches compared</h3>
<p>Migrating forms applications to APEX can be very cumbersome as they can be very large and complex.<br />
The main phases fo such a migration are:<br />
&#8211; Forms application preparation and analysis<br />
&#8211; Migration<br />
&#8211; APEX Application fine tuning<br />
&#8211; Rollout<br />
The success of such a migration lays on the combination of skilled FORMS developers and APEX developers.</p>
<h3>APEX-Actions</h3>
<p>Beside the well known Dynamic Actions in APEX, there is a new JavaScript library introduced in APEX 5.0: apex.actions<br />
Documentation to it came with version 5.1 in the <a href="https://docs.oracle.com/en/database/oracle/application-express/19.1/aexjs/apex.actions.html" target="_blank" rel="noopener noreferrer">APEX JavaScript API documentation</a>.<br />
It&#8217;s used by the APEX development team in the Page Designer and is now available to all developers.<br />
Actions allow to centrally encapsulate and define rendering, associated function and shortcuts of objects from the web pages all of it dynamically.<br />
It uses an observer which allows to have the same behavior for multiple objects of the same type on the same page.</p>
<p>The day ended with Sponsor Pitches &amp; Lightning Talks:<br />
&#8211; APEX Competition Winner Plugin<br />
&#8211; 5 things that make your life easier when using Docker<br />
&#8211; Verwenden Sie kein PL/SQL!<br />
&#8211; Improving Tech with <a href="https://compassionatecoding.com" target="_blank" rel="noopener noreferrer">Compassionate Coding</a></p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2019-day-2/">APEX Connect 2019 &#8211; Day 2</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/apex-connect-2019-day-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>APEX Connect 2019 &#8211; Day 1</title>
		<link>https://www.dbi-services.com/blog/apex-connect-2019-day-1/</link>
					<comments>https://www.dbi-services.com/blog/apex-connect-2019-day-1/#respond</comments>
		
		<dc:creator><![CDATA[Alain Lacour]]></dc:creator>
		<pubDate>Tue, 07 May 2019 20:33:06 +0000</pubDate>
				<category><![CDATA[Application integration & Middleware]]></category>
		<category><![CDATA[Development & Performance]]></category>
		<category><![CDATA[Oracle]]></category>
		<guid isPermaLink="false">https://www.dbi-services.com/blog/apex-connect-2019-day-1/</guid>

					<description><![CDATA[<p>This year again the APEX connect conference spans over three days with mixed topics around APEX, like JavaScript, PL/SQL and much more. After the welcome speech and the very funny and interesting Keynote about &#8220;PL/SQL: A Career Built On Top Of PL/SQL &#8211; 25 years of Coding, Sharing, and Learning&#8221; by Martin Widlake, I decided [&#8230;]</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2019-day-1/">APEX Connect 2019 &#8211; Day 1</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>This year again the APEX connect conference spans over three days with mixed topics around APEX, like JavaScript, PL/SQL and much more.<br />
After the welcome speech and the very funny and interesting Keynote about &#8220;PL/SQL: A Career Built On Top Of PL/SQL &#8211; 25 years of Coding, Sharing, and Learning&#8221; by Martin Widlake, I decided to attend presentations on following topics:<br />
&#8211; Oracle Text &#8211; A Powerful Tool for Oracle APEX Developers<br />
&#8211; Make It Pretty! MIP your APEX application!<br />
&#8211; REST Services without APEX &#8211; but with APEX_EXEC<br />
&#8211; Microservices with APEX<br />
&#8211; SQL Magic!<br />
&#8211; The UX of forms</p>
<h3>PL/SQL: A Career Built On Top Of PL/SQL &#8211; 25 years of Coding, Sharing, and Learning:</h3>
<p>Martin Widlake shared the story of 25 years development on Oracle from version 6 to the newest 19c.<br />
The most important to retain from his professional journey is that &#8220;Good developers are made by other developers&#8221; and &#8220;Everything you learn will have some return sometime in the future&#8221;. That means sharing is the key, keep yourself curious and never stop learning, even things that are not yet obviously useful. </p>
<h3>Oracle Text &#8211; A Powerful Tool for Oracle APEX Developers</h3>
<p>That feature is embedded as a standard in Oracle databases since 1997 when it was named Car Text. In 1999 it became Intermedia Text and finally Oracle Text in 2001. It allows to index text based fields of the database as well as files in BLOBs, allowing much faster and easier search of text patterns (words, sentences, &#8230;). We went thru aspects like syntax, fuzzy search, snippets and lexer.<br />
As search combinations require usage of specific operators and delimiters, which are cumbersome for end users, there is a useful package written by Roger Ford that allows to convert simple &#8220;Google&#8221; like requests into the right format for Oracle Text: PARSER <a href="https://cdn.app.compendium.com/uploads/user/e7c690e8-6ff9-102a-ac6d-e4aebca50425/bffaa258-457d-46a1-bb58-7e0285733cdf/File/b4f54d3c9baeed4519d6be76e3e34875/parser_v0991.pls" target="_blank" rel="noopener noreferrer">download</a><br />
His <a href="https://blogs.oracle.com/author/roger-ford" target="_blank" rel="noopener noreferrer">blog</a> will provide nice information about it and <a href="https://docs.oracle.com/en/database/oracle/oracle-database/19/ccref/index.html" target="_blank" rel="noopener noreferrer">Oracle documentation</a> provides all details to the usage of Oracle Text.<br />
You can find further information on following Blog:<br />
<a href="https://www.dbi-services.com/blog/understand-oracle-text-at-a-glance/" target="_blank" rel="noopener noreferrer">Oracle text at a glance</a></p>
<h3>Make It Pretty! MIP your APEX application!</h3>
<p>The business logic is the heart of the application but the UI is its face and what users will judge first.<br />
There are some rules which to Make It Pretty (MIP).<br />
First of all it needs to fullfil user needs by either:<br />
&#8211; stick to company brand rules<br />
&#8211; stick to company webpage design<br />
&#8211; stick to user wishes (can be drafted with <a href="https://www.templatemonster.com" target="_blank" rel="noopener noreferrer">template monster</a><br />
Technical and non-technical aspects need to be considered.<br />
Following Design rules help to improve the UI:<br />
&#8211; Be consistent<br />
&#8211; Make it intuitive<br />
&#8211; Be responsive (give feedback to users)<br />
&#8211; Keep it simple (not crowded)<br />
&#8211; Fonts: max 2 per page, 16px rule (verify on <a href="https://www.fontpair.co" target="_blank" rel="noopener noreferrer">fontpair.co</a>)<br />
&#8211; Color rules (verify on <a href="https://contrastchecker.com" target="_blank" rel="noopener noreferrer">contrast checker</a>)<br />
&#8211; Have imagination<br />
&#8211; Know your APEX universal theme</p>
<h3>REST Services without APEX &#8211; but with APEX_EXEC</h3>
<p>APEX is based on metadata to store definitions and PL/SQL packages support the engine.<br />
That means APEX metadata support can be used outside the APEX application in any PL/SQL code.<br />
One particular APEX PL/SQL package is APEX_EXEC introduced in APEX 18.1. It allows to abstract the data format (XML, json, &#8230;) in websources in order to be able to use data as it would come from any local table. It also takes care of pagination from web services to make the data retrieval transparent. But in order to make use of that package an APEX session must first be created to initiate the needed metadata. Fortunately this is made easy since APEX 18.1 with procedure create_session from the apex_session package.<br />
The next version of APEX 19.2 might integrate websource modules with interactive grid.</p>
<h3>Microservices with APEX</h3>
<p>APEX can be compared to microservices by looking at the characteristics:<br />
&#8211; Scalability<br />
&#8211; Fail-safe<br />
&#8211; Maintainable<br />
&#8211; Technology independent<br />
&#8211; Database independent<br />
&#8211; Small<br />
And it mostly matches!<br />
But APEX also overrules the microservices drawbacks:<br />
&#8211; Complex architecture<br />
&#8211; Complex testing<br />
&#8211; Migration efforts<br />
&#8211; Complex development<br />
To have a behavior close to microservices, APEX applications have to make use of web services for the data management and the interfacing with any kind of other services. This allows to clearly separate data management and applications. ORDS allows to enable REST at schema and also object level within APEX. Caching also needs to be considered based data change frequency to lower the lag time of data handling.</p>
<h3>SQL Magic!</h3>
<p>Since Oracle 12c the database provides the json data guide which allows easy json data manipulation like any standard table data. This comes also with new views like user_json_data_guide.<br />
Oracle 11g introduced Invisible columns that hides columns from table description as well as standard &#8220;select *&#8221; but not specific select statements. This can be used to deprecate columns or add new columns without breaking existing applications with &#8220;select *&#8221;. Even though &#8220;select *&#8221; should be avoided in applications.<br />
Oracle 12c also introduced polymorphic table function that can be used with pipelined tables to create views allowing to pivot and transpose tables whatever number of columns and rows they have.<br />
All those features are very useful and should be used further.</p>
<h3>The UX of forms</h3>
<p>User eXperience (UX) rules to be applied in forms go beyond APEX. The aim to:<br />
&#8211; Reduce cognitive load<br />
&#8211; Prevent errors<br />
&#8211; Make it user friendly<br />
The rules are following:<br />
&#8211; One thing per page<br />
&#8211; Put field labels above rather than side to<br />
&#8211; Replace small dropdowns by radio buttons<br />
&#8211; Use Interactive data lists for long dropdowns<br />
&#8211; For login pages, be specific on username type (name, e-mail) and password definition rules<br />
&#8211; Avoid * for required fields but rather flag Optional fileds<br />
&#8211; Adapt field size on expected data length<br />
&#8211; Use smart default values<br />
&#8211; Use entry masks<br />
&#8211; Use date picker<br />
&#8211; Define check before you start pattern to guide users and reduce form length<br />
All that will improve UX.</p>
<p>L’article <a href="https://www.dbi-services.com/blog/apex-connect-2019-day-1/">APEX Connect 2019 &#8211; Day 1</a> est apparu en premier sur <a href="https://www.dbi-services.com/blog">dbi Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.dbi-services.com/blog/apex-connect-2019-day-1/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Lazy Loading (feed)

Served from: www.dbi-services.com @ 2026-07-26 19:25:28 by W3 Total Cache
-->