<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>question Re: Need assistance with below best practice error in Developer forum</title>
    <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759679#M1062444</link>
    <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/332499"&gt;@laszloballa&lt;/a&gt;&amp;nbsp;, BR full script is as follows:&lt;/P&gt;&lt;P&gt;See&amp;nbsp; &lt;STRONG&gt;var originalContentsInFile = Packages.java.lang.String(bytesInFile);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;(function executeRule(current, previous /*null when async*/ ) {
    var comment = current.variables.u_comment.toString(); // get the value of Comment from catalog item
    var ritmNumber = current.number; // get the value of RITM number

    // get the attachment record from the current RITM
    var attachmentGR = new GlideRecord('sys_attachment');
    attachmentGR.addQuery('table_name', 'sc_req_item');
    attachmentGR.addQuery('table_sys_id', current.sys_id);
    attachmentGR.addQuery('file_name', 'CONTAINS', '.csv');
    attachmentGR.query();
    if (attachmentGR.next()) {
        var gsa = new GlideSysAttachment();
        var tableName = attachmentGR.getValue('table_name');
        var sysId = attachmentGR.getValue('table_sys_id');
        var bytesInFile = gsa.getBytes(tableName, sysId);
        var originalContentsInFile = Packages.java.lang.String(bytesInFile);
        originalContentsInFile = String(originalContentsInFile);
        var rows = originalContentsInFile.split('\n');
        var columnA = [];
        for (var i = 1; i &amp;lt; rows.length; i++) { // start from index 1 to skip the header row
            var columns = rows[i].split(',');
            columnA.push(columns[0]);
        }
        var concatenatedDeviceID = columnA.join(',');

        // gs.print("Data in Column A concatenatedDeviceID : " + concatenatedDeviceID);

        var ci = new GlideRecord('cmdb_ci_hardware');
        ci.addQuery('serial_number', 'IN', concatenatedDeviceID.split(","));
        ci.query();
        //    var count = ci.getRowCount();
        //    gs.info('Found ' + count + ' hardware records with serial numbers ' + concatenatedDeviceID);
        while (ci.next()) {
            var workNotes = ci.getValue('u_work_notes'); // get the existing work_notes value
            var newWorkNotes = "RITM number: " + ritmNumber;
            if (comment) {
                newWorkNotes += "\nComment: " + comment; // add the comment to the work_notes value if provided
            }
            // gs.print("work_notes : " + newWorkNotes);
            // set newNotes as the journal entry for u_work_notes
            var field = ci.u_work_notes;
            field.setJournalEntry(newWorkNotes);
            ci.update(); // save the changes
        }
        //    gs.print("Records Updated in cmdb_ci_hardware.");
    } //else {
    //  gs.print("No matching records found in cmdb_ci_hardware.");
    // }
})(current, previous);&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 12 Dec 2023 08:34:56 GMT</pubDate>
    <dc:creator>Community Alums</dc:creator>
    <dc:date>2023-12-12T08:34:56Z</dc:date>
    <item>
      <title>Need assistance with below best practice error</title>
      <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759628#M1062422</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am getting below best practice error. I used "Packages.java.lang.String(bytesInFile)" in BR script.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P data-unlink="true"&gt;&lt;SPAN class=""&gt;&lt;STRONG&gt;&lt;I&gt;&lt;U&gt;Best Practice Warning:&lt;/U&gt;&lt;/I&gt;&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;FONT color="blue"&gt;brni_BPE10482&lt;/FONT&gt;&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Checks for direct calls to Java packages&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN class=""&gt;&lt;I&gt;&lt;U&gt;Steps to resolve issue:&lt;/U&gt;&lt;/I&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;It is recommended to run the Package Call Removal Tool, and replace all Java package calls with the Glide alternative.&lt;BR /&gt;Required to run the Package Call Removal Tool, and replace all Java package calls with the Glide alternative.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Business Rule script&lt;/DIV&gt;&lt;DIV&gt;See&amp;nbsp; &lt;STRONG&gt;var originalContentsInFile = Packages.java.lang.String(bytesInFile);&lt;/STRONG&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;(function executeRule(current, previous /*null when async*/ ) {
    var comment = current.variables.u_comment.toString(); // get the value of Comment from catalog item
    var ritmNumber = current.number; // get the value of RITM number

    // get the attachment record from the current RITM
    var attachmentGR = new GlideRecord('sys_attachment');
    attachmentGR.addQuery('table_name', 'sc_req_item');
    attachmentGR.addQuery('table_sys_id', current.sys_id);
    attachmentGR.addQuery('file_name', 'CONTAINS', '.csv');
    attachmentGR.query();
    if (attachmentGR.next()) {
        var gsa = new GlideSysAttachment();
        var tableName = attachmentGR.getValue('table_name');
        var sysId = attachmentGR.getValue('table_sys_id');
        var bytesInFile = gsa.getBytes(tableName, sysId);
        var originalContentsInFile = Packages.java.lang.String(bytesInFile);
        originalContentsInFile = String(originalContentsInFile);
        var rows = originalContentsInFile.split('\n');
        var columnA = [];
        for (var i = 1; i &amp;lt; rows.length; i++) { // start from index 1 to skip the header row
            var columns = rows[i].split(',');
            columnA.push(columns[0]);
        }
        var concatenatedDeviceID = columnA.join(',');

        // gs.print("Data in Column A concatenatedDeviceID : " + concatenatedDeviceID);

        var ci = new GlideRecord('cmdb_ci_hardware');
        ci.addQuery('serial_number', 'IN', concatenatedDeviceID.split(","));
        ci.query();
        //    var count = ci.getRowCount();
        //    gs.info('Found ' + count + ' hardware records with serial numbers ' + concatenatedDeviceID);
        while (ci.next()) {
            var workNotes = ci.getValue('u_work_notes'); // get the existing work_notes value
            var newWorkNotes = "RITM number: " + ritmNumber;
            if (comment) {
                newWorkNotes += "\nComment: " + comment; // add the comment to the work_notes value if provided
            }
            // gs.print("work_notes : " + newWorkNotes);
            // set newNotes as the journal entry for u_work_notes
            var field = ci.u_work_notes;
            field.setJournalEntry(newWorkNotes);
            ci.update(); // save the changes
        }
        //    gs.print("Records Updated in cmdb_ci_hardware.");
    } //else {
    //  gs.print("No matching records found in cmdb_ci_hardware.");
    // }
})(current, previous);&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN class=""&gt;Please assist&lt;/SPAN&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Dec 2023 08:37:01 GMT</pubDate>
      <guid>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759628#M1062422</guid>
      <dc:creator>Community Alums</dc:creator>
      <dc:date>2023-12-12T08:37:01Z</dc:date>
    </item>
    <item>
      <title>Re: Need assistance with below best practice error</title>
      <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759640#M1062429</link>
      <description>&lt;P&gt;Can you share the full script to see where you have used a Java package call? As mentioned, it generally not be required and you should be using ServiceNow classes instead, depending on your use case.&lt;/P&gt;</description>
      <pubDate>Tue, 12 Dec 2023 08:06:57 GMT</pubDate>
      <guid>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759640#M1062429</guid>
      <dc:creator>laszloballa</dc:creator>
      <dc:date>2023-12-12T08:06:57Z</dc:date>
    </item>
    <item>
      <title>Re: Need assistance with below best practice error</title>
      <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759644#M1062432</link>
      <description>&lt;P&gt;Hi&amp;nbsp;@Community Alums&amp;nbsp;&lt;/P&gt;
&lt;P&gt;please provide more information and context to help us understand you better.&lt;/P&gt;
&lt;P&gt;It is not clear what you want to achieve when using&amp;nbsp;&lt;STRONG&gt;Packages.java.lang.String(binData)&lt;/STRONG&gt; as the rest of the code and the underlying use case is missing&lt;/P&gt;
&lt;P&gt;Maik&lt;/P&gt;</description>
      <pubDate>Tue, 12 Dec 2023 08:07:53 GMT</pubDate>
      <guid>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759644#M1062432</guid>
      <dc:creator>Maik Skoddow</dc:creator>
      <dc:date>2023-12-12T08:07:53Z</dc:date>
    </item>
    <item>
      <title>Re: Need assistance with below best practice error</title>
      <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759679#M1062444</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/332499"&gt;@laszloballa&lt;/a&gt;&amp;nbsp;, BR full script is as follows:&lt;/P&gt;&lt;P&gt;See&amp;nbsp; &lt;STRONG&gt;var originalContentsInFile = Packages.java.lang.String(bytesInFile);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;(function executeRule(current, previous /*null when async*/ ) {
    var comment = current.variables.u_comment.toString(); // get the value of Comment from catalog item
    var ritmNumber = current.number; // get the value of RITM number

    // get the attachment record from the current RITM
    var attachmentGR = new GlideRecord('sys_attachment');
    attachmentGR.addQuery('table_name', 'sc_req_item');
    attachmentGR.addQuery('table_sys_id', current.sys_id);
    attachmentGR.addQuery('file_name', 'CONTAINS', '.csv');
    attachmentGR.query();
    if (attachmentGR.next()) {
        var gsa = new GlideSysAttachment();
        var tableName = attachmentGR.getValue('table_name');
        var sysId = attachmentGR.getValue('table_sys_id');
        var bytesInFile = gsa.getBytes(tableName, sysId);
        var originalContentsInFile = Packages.java.lang.String(bytesInFile);
        originalContentsInFile = String(originalContentsInFile);
        var rows = originalContentsInFile.split('\n');
        var columnA = [];
        for (var i = 1; i &amp;lt; rows.length; i++) { // start from index 1 to skip the header row
            var columns = rows[i].split(',');
            columnA.push(columns[0]);
        }
        var concatenatedDeviceID = columnA.join(',');

        // gs.print("Data in Column A concatenatedDeviceID : " + concatenatedDeviceID);

        var ci = new GlideRecord('cmdb_ci_hardware');
        ci.addQuery('serial_number', 'IN', concatenatedDeviceID.split(","));
        ci.query();
        //    var count = ci.getRowCount();
        //    gs.info('Found ' + count + ' hardware records with serial numbers ' + concatenatedDeviceID);
        while (ci.next()) {
            var workNotes = ci.getValue('u_work_notes'); // get the existing work_notes value
            var newWorkNotes = "RITM number: " + ritmNumber;
            if (comment) {
                newWorkNotes += "\nComment: " + comment; // add the comment to the work_notes value if provided
            }
            // gs.print("work_notes : " + newWorkNotes);
            // set newNotes as the journal entry for u_work_notes
            var field = ci.u_work_notes;
            field.setJournalEntry(newWorkNotes);
            ci.update(); // save the changes
        }
        //    gs.print("Records Updated in cmdb_ci_hardware.");
    } //else {
    //  gs.print("No matching records found in cmdb_ci_hardware.");
    // }
})(current, previous);&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Dec 2023 08:34:56 GMT</pubDate>
      <guid>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759679#M1062444</guid>
      <dc:creator>Community Alums</dc:creator>
      <dc:date>2023-12-12T08:34:56Z</dc:date>
    </item>
    <item>
      <title>Re: Need assistance with below best practice error</title>
      <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759690#M1062448</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/116698"&gt;@Maik Skoddow&lt;/a&gt;&amp;nbsp;&amp;nbsp;, BR full script is as follows:&lt;/P&gt;&lt;P&gt;See&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;var originalContentsInFile = Packages.java.lang.String(bytesInFile);&lt;/STRONG&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;(function executeRule(current, previous /*null when async*/ ) {
    var comment = current.variables.u_comment.toString(); // get the value of Comment from catalog item
    var ritmNumber = current.number; // get the value of RITM number

    // get the attachment record from the current RITM
    var attachmentGR = new GlideRecord('sys_attachment');
    attachmentGR.addQuery('table_name', 'sc_req_item');
    attachmentGR.addQuery('table_sys_id', current.sys_id);
    attachmentGR.addQuery('file_name', 'CONTAINS', '.csv');
    attachmentGR.query();
    if (attachmentGR.next()) {
        var gsa = new GlideSysAttachment();
        var tableName = attachmentGR.getValue('table_name');
        var sysId = attachmentGR.getValue('table_sys_id');
        var bytesInFile = gsa.getBytes(tableName, sysId);
        var originalContentsInFile = Packages.java.lang.String(bytesInFile);
        originalContentsInFile = String(originalContentsInFile);
        var rows = originalContentsInFile.split('\n');
        var columnA = [];
        for (var i = 1; i &amp;lt; rows.length; i++) { // start from index 1 to skip the header row
            var columns = rows[i].split(',');
            columnA.push(columns[0]);
        }
        var concatenatedDeviceID = columnA.join(',');

        // gs.print("Data in Column A concatenatedDeviceID : " + concatenatedDeviceID);

        var ci = new GlideRecord('cmdb_ci_hardware');
        ci.addQuery('serial_number', 'IN', concatenatedDeviceID.split(","));
        ci.query();
        //    var count = ci.getRowCount();
        //    gs.info('Found ' + count + ' hardware records with serial numbers ' + concatenatedDeviceID);
        while (ci.next()) {
            var workNotes = ci.getValue('u_work_notes'); // get the existing work_notes value
            var newWorkNotes = "RITM number: " + ritmNumber;
            if (comment) {
                newWorkNotes += "\nComment: " + comment; // add the comment to the work_notes value if provided
            }
            // gs.print("work_notes : " + newWorkNotes);
            // set newNotes as the journal entry for u_work_notes
            var field = ci.u_work_notes;
            field.setJournalEntry(newWorkNotes);
            ci.update(); // save the changes
        }
        //    gs.print("Records Updated in cmdb_ci_hardware.");
    } //else {
    //  gs.print("No matching records found in cmdb_ci_hardware.");
    // }
})(current, previous);&lt;/LI-CODE&gt;</description>
      <pubDate>Tue, 12 Dec 2023 08:38:57 GMT</pubDate>
      <guid>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759690#M1062448</guid>
      <dc:creator>Community Alums</dc:creator>
      <dc:date>2023-12-12T08:38:57Z</dc:date>
    </item>
    <item>
      <title>Re: Need assistance with below best practice error</title>
      <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759712#M1062453</link>
      <description>&lt;P&gt;Hi&amp;nbsp;@Community Alums&amp;nbsp;&lt;/P&gt;
&lt;P&gt;you can use the following conversion:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;LI-CODE lang="javascript"&gt;var originalContentsInFile = gs.base64Decode(GlideStringUtil.base64Encode(bytesInFile));&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Maik&lt;/P&gt;</description>
      <pubDate>Tue, 12 Dec 2023 08:55:40 GMT</pubDate>
      <guid>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759712#M1062453</guid>
      <dc:creator>Maik Skoddow</dc:creator>
      <dc:date>2023-12-12T08:55:40Z</dc:date>
    </item>
    <item>
      <title>Re: Need assistance with below best practice error</title>
      <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759717#M1062456</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/116698"&gt;@Maik Skoddow&lt;/a&gt;&amp;nbsp;,&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for your reply, Let me check&lt;/P&gt;</description>
      <pubDate>Tue, 12 Dec 2023 08:52:43 GMT</pubDate>
      <guid>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759717#M1062456</guid>
      <dc:creator>Community Alums</dc:creator>
      <dc:date>2023-12-12T08:52:43Z</dc:date>
    </item>
    <item>
      <title>Re: Need assistance with below best practice error</title>
      <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759739#M1062460</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/116698"&gt;@Maik Skoddow&lt;/a&gt;&amp;nbsp;, I checked but it is not working, Unable to fetch records from attachment (.xlsx)&lt;/P&gt;</description>
      <pubDate>Tue, 12 Dec 2023 09:17:28 GMT</pubDate>
      <guid>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759739#M1062460</guid>
      <dc:creator>Community Alums</dc:creator>
      <dc:date>2023-12-12T09:17:28Z</dc:date>
    </item>
    <item>
      <title>Re: Need assistance with below best practice error</title>
      <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759783#M1062475</link>
      <description>&lt;P&gt;Hi&amp;nbsp;@Community Alums&amp;nbsp;&lt;/P&gt;
&lt;P&gt;in your first code you wanted to load a CSV file which is text based and that was the reason for my solution. Now you want to load an Excel file which is a native and binary format. Here my approach will not work. You really should be clear in your issue description and requirement!&lt;/P&gt;
&lt;P&gt;So please have a take a look at the &lt;A href="https://developer.servicenow.com/dev.do#!/reference/api/vancouver/server/sn_impex/GlideExcelParserScopedAPI" target="_blank" rel="noopener"&gt;GlideExcelParser&lt;/A&gt; API which provides a way to extract data from Excel files.&lt;/P&gt;
&lt;P&gt;Maik&lt;/P&gt;</description>
      <pubDate>Tue, 12 Dec 2023 09:55:13 GMT</pubDate>
      <guid>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759783#M1062475</guid>
      <dc:creator>Maik Skoddow</dc:creator>
      <dc:date>2023-12-12T09:55:13Z</dc:date>
    </item>
    <item>
      <title>Re: Need assistance with below best practice error</title>
      <link>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759798#M1062486</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://www.servicenow.com/community/user/viewprofilepage/user-id/116698"&gt;@Maik Skoddow&lt;/a&gt;&amp;nbsp;, Sorry for the confusion, but &lt;SPAN&gt;e&amp;nbsp;&lt;/SPAN&gt;&lt;A href="https://developer.servicenow.com/dev.do#!/reference/api/vancouver/server/sn_impex/GlideExcelParserScopedAPI" target="_blank" rel="noopener noreferrer"&gt;GlideExcelParser&lt;/A&gt;&lt;SPAN&gt;&amp;nbsp;API&amp;nbsp;working fine for me, Thanks!&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 12 Dec 2023 10:01:52 GMT</pubDate>
      <guid>https://www.servicenow.com/community/developer-forum/need-assistance-with-below-best-practice-error/m-p/2759798#M1062486</guid>
      <dc:creator>Community Alums</dc:creator>
      <dc:date>2023-12-12T10:01:52Z</dc:date>
    </item>
  </channel>
</rss>

