{"id":31205,"date":"2026-01-06T08:28:21","date_gmt":"2026-01-06T08:28:21","guid":{"rendered":"http:\/\/kovaion-new1.local\/oracle-bi-extract-employee-photo-using-dynamic-blob\/"},"modified":"2026-01-06T12:49:32","modified_gmt":"2026-01-06T12:49:32","slug":"oracle-bi-extract-employee-photo-using-dynamic-blob","status":"publish","type":"post","link":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/oracle-bi-extract-employee-photo-using-dynamic-blob\/","title":{"rendered":"Oracle BI-Extract Employee Photo using Dynamic Blob"},"content":{"rendered":"<p>On a normal day for the HRBP, would not be nice for him\/her to have the Profile photo of all employees so it would be nice to communicate with them in personalized mail on inviting them for special occasions or recognize them for their brilliant efforts.<\/p>\n<p>But how they can extract all the Pic or documents of the employee? Via Oracle BI using Dynamic Blob.<\/p>\n<p>BI Publisher (Oracle Business Intelligence Publisher) is a powerful reporting tool. The one main unexplored update on BI Report includes pixel-perfect reports, interactive reports, and personalized documents. This capability empowers HRBPs to go beyond standard communication methods and establish deeper connections with employees. The combination of pixel-perfect reports, interactive elements, and personalized content elevates the quality of communication and engagement within the organization.<\/p>\n<p>In this blog, let us explore the scenario of generating a personalized document that is easy to use, including photos of the employees, and using the bursting feature to send them to the employees for their birthdays or anniversaries.<\/p>\n<p>&nbsp;<\/p>\n<h3>Here are the steps to generate a BI report for an employee profile using Dynamic Blob:<\/h3>\n<p>&nbsp;<\/p>\n<p><strong>STEP 1:<\/strong> To create a data model, Navigate Tools -&gt; Report and Analytics.<\/p>\n<figure id=\"attachment_6567\" aria-describedby=\"caption-attachment-6567\" style=\"width: 847px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6567\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig1-Report-and-Analytics-300x152.png\" alt=\"Report-and-Analytics\" width=\"847\" height=\"429\" \/><figcaption id=\"caption-attachment-6567\" class=\"wp-caption-text\"><strong>Fig.1: Report and Analytics<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>STEP 2:<\/strong> Click on CREATE in the Top Right corner, select \u2018Data Model\u2019, and Choose SQL Query Option.<\/p>\n<figure id=\"attachment_6568\" aria-describedby=\"caption-attachment-6568\" style=\"width: 843px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6568\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-2-Create-a-Data-model-300x143.png\" alt=\"Creating-a-Data-model\" width=\"843\" height=\"402\" \/><figcaption id=\"caption-attachment-6568\" class=\"wp-caption-text\"><strong>Fig.2: Creating a Data Model<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>STEP 3:<\/strong> Write a SQL Query to get employee profile details from the PER_IMAGES table.<\/p>\n<figure id=\"attachment_6569\" aria-describedby=\"caption-attachment-6569\" style=\"width: 845px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6569\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-3-Fetching-SQL-query-300x147.png\" alt=\"Fetching-SQL-query\" width=\"845\" height=\"414\" \/><figcaption id=\"caption-attachment-6569\" class=\"wp-caption-text\"><strong>Fig.3: Fetching SQL query<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>STEP 4:<\/strong> When we run this SQL query, the Output will be shown as below.<br \/>\nWe must click on EXPORT to download the result in an XML File.<\/p>\n<figure id=\"attachment_6570\" aria-describedby=\"caption-attachment-6570\" style=\"width: 828px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6570\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-4-Running-the-sql-query-300x155.png\" alt=\"Running-the-sql-query\" width=\"828\" height=\"428\" \/><figcaption id=\"caption-attachment-6570\" class=\"wp-caption-text\"><strong>Fig.4: Running the SQL query<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>STEP 5:<\/strong> Create an RTF template with the fields mentioned in SQL Query (Data Model).<\/p>\n<figure id=\"attachment_6571\" aria-describedby=\"caption-attachment-6571\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6571\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-5-Creating-RTF-Template-For-the-data-model-300x168.png\" alt=\"Creating-RTF- Template-For-the-data-model\" width=\"800\" height=\"448\" \/><figcaption id=\"caption-attachment-6571\" class=\"wp-caption-text\"><strong>Fig.5: Creating RTF Template For the data model<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>STEP 6:<\/strong> While creating the RTF file, Click on BI Publisher &#8211;&gt; Sample XML &#8211;&gt; Dialog box opens.<\/p>\n<p>Open the XML file downloaded by running the SQL query in STEP 4.<\/p>\n<figure id=\"attachment_6572\" aria-describedby=\"caption-attachment-6572\" style=\"width: 803px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6572\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-6.1-Inserting-the-XML-file-to-RTF-300x152.png\" alt=\"Inserting-the-XML-file-to-RTF\" width=\"803\" height=\"407\" \/><figcaption id=\"caption-attachment-6572\" class=\"wp-caption-text\"><strong>Fig.6.1: Inserting the XML file to RTF<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_6573\" aria-describedby=\"caption-attachment-6573\" style=\"width: 798px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6573\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-6.2-XML-file-insertion-successful-300x153.png\" alt=\"XML-file-insertion-successful\" width=\"798\" height=\"407\" \/><figcaption id=\"caption-attachment-6573\" class=\"wp-caption-text\"><strong>Fig.6.2: XML file insertion successful<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>Step 7:<\/strong> Once the XML file is connected, we must add a table by using the table wizard and continue the process \u2013 select the fields to be displayed on the report.<\/p>\n<figure id=\"attachment_6574\" aria-describedby=\"caption-attachment-6574\" style=\"width: 807px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6574\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-7.1-Preparing-the-template-with-the-fields-from-the-sql-query-300x165.png\" alt=\"Preparing-the-template-with-the-fields-from-the-sql query\" width=\"807\" height=\"444\" \/><figcaption id=\"caption-attachment-6574\" class=\"wp-caption-text\"><strong>Fig.7.1: Preparing the template with the fields from the SQL query<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_6575\" aria-describedby=\"caption-attachment-6575\" style=\"width: 819px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6575\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-7.2-Preparing-the-template-with-the-fields-from-the-sql-query-300x149.png\" alt=\"Preparing-the-template-with-the-fields-from-the-sql query\" width=\"819\" height=\"407\" \/><figcaption id=\"caption-attachment-6575\" class=\"wp-caption-text\"><strong>Fig.7.2: Preparing the template with the fields from the SQL query<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_6576\" aria-describedby=\"caption-attachment-6576\" style=\"width: 818px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6576\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-7.3-Preparing-the-template-with-the-fields-from-the-sql-query-300x157.png\" alt=\"Preparing-the-template-with-the-fields-from-the-sql-query\" width=\"818\" height=\"428\" \/><figcaption id=\"caption-attachment-6576\" class=\"wp-caption-text\"><strong>Fig.7.3: Preparing the template with the fields from the SQL query<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_6577\" aria-describedby=\"caption-attachment-6577\" style=\"width: 812px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6577\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-7.4-Preparing-the-template-with-the-fields-from-the-sql-query-300x154.png\" alt=\"Preparing-the-template-with-the-fields-from-the-sql-query\" width=\"812\" height=\"417\" \/><figcaption id=\"caption-attachment-6577\" class=\"wp-caption-text\"><strong>Fig.7.4: Preparing the template with the fields from the SQL query<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>Step 8:<\/strong> Now the template is ready for the report generation.<\/p>\n<figure id=\"attachment_6578\" aria-describedby=\"caption-attachment-6578\" style=\"width: 820px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6578\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-8.1-Template-created-for-report-generation-300x155.png\" alt=\"Template-created-for-report-generation\" width=\"820\" height=\"424\" \/><figcaption id=\"caption-attachment-6578\" class=\"wp-caption-text\"><strong>Fig.8.1: Template created for report generation<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p>Click on Field Browser, to give a syntax for the employee profile.<\/p>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_6579\" aria-describedby=\"caption-attachment-6579\" style=\"width: 823px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6579\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-8.2-Inserting-syntax-for-employee-profile-300x159.png\" alt=\"Inserting-syntax-for-employee-profile\" width=\"823\" height=\"436\" \/><figcaption id=\"caption-attachment-6579\" class=\"wp-caption-text\"><strong>Fig.8.2: Inserting syntax for employee profile<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>Step 9:<\/strong> This is the last column that we want to display as an image. So, we must use a syntax called \u201cfo: instream.\u201d<\/p>\n<figure id=\"attachment_6580\" aria-describedby=\"caption-attachment-6580\" style=\"width: 820px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6580\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-9-Adding-syntax-to-display-in-Image-300x157.png\" alt=\"Adding-syntax-to-display-in-Image\" width=\"820\" height=\"429\" \/><figcaption id=\"caption-attachment-6580\" class=\"wp-caption-text\"><strong>Fig.9: Adding syntax to display in Image<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>Step 10:<\/strong> Now the generated RTF layout file needs to be uploaded.<\/p>\n<figure id=\"attachment_6581\" aria-describedby=\"caption-attachment-6581\" style=\"width: 820px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6581\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-10-Uploading-RTF-file-300x166.png\" alt=\"Uploading-RTF-file\" width=\"820\" height=\"454\" \/><figcaption id=\"caption-attachment-6581\" class=\"wp-caption-text\"><strong>Fig.10: Uploading RTF file<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>Step 11:<\/strong> While uploading the layout file, we must fill in the layout name, choose an RTF template specify the type given as \u2018RTF\u2019 template, and choose locale as \u2018English\u2019.<\/p>\n<figure id=\"attachment_6582\" aria-describedby=\"caption-attachment-6582\" style=\"width: 822px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6582\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-11-Setting-up-RTF-file-type-and-file-name-300x148.png\" alt=\"Setting-up-RTF-file-type-and-file-name\" width=\"822\" height=\"405\" \/><figcaption id=\"caption-attachment-6582\" class=\"wp-caption-text\"><strong>Fig.11: Setting up RTF file type and file name<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>Step 12:<\/strong> Once the RTF layout is uploaded, the data model needs to be linked with the report.<\/p>\n<figure id=\"attachment_6583\" aria-describedby=\"caption-attachment-6583\" style=\"width: 822px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6583\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-12-Linking-datamodel-with-the-RTF-layout-300x149.png\" alt=\" Linking-data-model-with-the-RTF-layout\" width=\"822\" height=\"408\" \/><figcaption id=\"caption-attachment-6583\" class=\"wp-caption-text\"><strong>Fig.12: Linking data model with the RTF layout<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<p><strong>Step 13:<\/strong> Once the data model is linked, clicking on \u2018View Report\u2019 gives us the BI Report with Dynamic BLOB Image.<\/p>\n<figure id=\"attachment_6584\" aria-describedby=\"caption-attachment-6584\" style=\"width: 844px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-6584\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-13.1-Viewing-the-BI-Report-with-dynamic-BLOB-image-300x144.png\" alt=\"Viewing-the-BI-Report-with-dynamic-BLOB-image\" width=\"844\" height=\"405\" \/><figcaption id=\"caption-attachment-6584\" class=\"wp-caption-text\"><strong>Fig.13.1: Viewing the BI Report with dynamic BLOB image<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<figure id=\"attachment_6585\" aria-describedby=\"caption-attachment-6585\" style=\"width: 821px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-6585\" src=\"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-content\/uploads\/2026\/01\/Fig-13.2-Viewing-the-BI-Report-with-dynamic-BLOB-image-300x148.png\" alt=\"Viewing-the-BI-Report-with-dynamic-BLOB-image\" width=\"821\" height=\"405\" \/><figcaption id=\"caption-attachment-6585\" class=\"wp-caption-text\"><strong>Fig 13.2 Viewing the BI Report with dynamic BLOB image<\/strong><\/figcaption><\/figure>\n<p>&nbsp;<\/p>\n<h3>Bottom Line:<\/h3>\n<p>Oracle BI&#8217;s dynamic BLOB extraction empowers HRBPs to enhance communication, engagement, and recognition. Integrating employee profile photos into personalized documents allows for stronger connections, milestone celebrations, and improved satisfaction. This, coupled with Oracle BI Publisher&#8217;s features, transforms HR engagement by fostering appreciation and connectivity. The ability to generate personalized documents with photos and the bursting feature strengthens employee-organization bonds. This innovative approach through Oracle BI offers HRBPs new avenues to inspire, engage, and create a vibrant workplace.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>Author<\/strong>: Gowri Perumal, Oracle Fusion Consultant<\/p>\n","protected":false},"excerpt":{"rendered":"<p>On a normal day for the HRBP, would not be nice for him\/her to have the Profile photo of all employees so it would be nice to communicate with them in personalized mail on inviting them for special occasions or recognize them for their brilliant efforts. But how they can extract all the Pic or [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":24951,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[18],"tags":[],"class_list":["post-31205","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-oracle-hcm"],"acf":[],"_links":{"self":[{"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/posts\/31205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/comments?post=31205"}],"version-history":[{"count":1,"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/posts\/31205\/revisions"}],"predecessor-version":[{"id":31206,"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/posts\/31205\/revisions\/31206"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/media\/24951"}],"wp:attachment":[{"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/media?parent=31205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/categories?post=31205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/stage.kovaionplay.com\/stage-kovaion\/wp-json\/wp\/v2\/tags?post=31205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}