<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Fri Feb 09 00:11:43 UTC 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary add field=key&field=summary to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>FOLIO Jira</title>
    <link>https://folio-org.atlassian.net</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-us</language>    <build-info>
        <version>1001.0.0-SNAPSHOT</version>
        <build-number>100246</build-number>
        <build-date>07-02-2024</build-date>
    </build-info>

<item>
            <title>[UXPROD-949] Rewrite Cornell&apos;s Web based LS-Tools</title>
                <link>https://folio-org.atlassian.net/browse/UXPROD-949</link>
                <project id="10000" key="UXPROD">UX Product</project>
                    <description>&lt;p&gt;LS-Tools = A tool set at Cornell which allows technical services do library automation tasks through a common web interface.&lt;br/&gt;
It is essentially an ETL tool. It comprises cleanup jobs, export and import jobs. There is a specification written for each job that describes who owns it, how it is executed, what is needed, etc. The app also allows for searching of marc data with a highly granular selection capability. The app is a swiss army knife of technical services activities. It has meant a huge increase in productivity for technical services staff. Reimplementing this in Folio will be a challenge.&lt;br/&gt;
Some combination of the workflow engine and the marc batch loader could replace LS tools. The workflow engine is meant to be a platform to build these kinds of applications on.&lt;/p&gt;</description>
                <environment></environment>
        <key id="10541">UXPROD-949</key>
            <summary>Rewrite Cornell&apos;s Web based LS-Tools</summary>
                <type id="10000" iconUrl="https://folio-org.atlassian.net/images/icons/issuetypes/epic.svg">Epic</type>
                                            <priority id="10002" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p3.svg">P3</priority>
                        <status id="6" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="green"/>
                                    <resolution id="10000">Won&apos;t Do</resolution>
                                                        <assignee accountid="-1">Unassigned</assignee>
                                                                <reporter accountid="5af5ecdb772036612ff61cf1">Hkaplanian</reporter>
                                    <labels>
                            <label>sysops_mgt</label>
                    </labels>
                <created>Thu, 14 Jun 2018 12:43:25 +0000</created>
                <updated>Tue, 18 Apr 2023 18:38:17 +0000</updated>
                            <resolved>Tue, 18 Apr 2023 18:38:17 +0000</resolved>
                                                    <fixVersion>Q4 2019</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>6</watches>
                                                                <comments>
                                                            <comment id="11763" author="557058:f28d9e2e-c4bf-4283-a57d-136003c73648" created="Mon, 9 Jul 2018 20:48:27 +0000"  >&lt;p&gt;Here is my attempt to capture what LSTools is in a way that will facilitate figuring out what would be needed to support it in FOLIO:&lt;/p&gt;

&lt;p&gt;LSTools is a platform for automated library technical services, centered around batch processing of MARC metadata and feeding it into Cornell&apos;s installation of Voyager.  It was not originally designed as such, but instead grew organically out of a collection of scripts and programs that did library automation tasks.  The programmer responsible for those scripts realized that by putting a web interface in front of the automation jobs, they could be invoked by the technical services staff directly.  Over time, patterns emerged in the types of jobs being run, and the programmer consolidated disparate scripts into fewer, more capable programs that could be adjusted via parameters for specific situations.&lt;/p&gt;

&lt;p&gt;In one way, LSTools can be viewed as a highly specialized ETL tool, in that it extracts, transforms, and loads data.  It does not, however, play the role that ETL tools generally do in transforming data to feed a data warehouse.&lt;/p&gt;

&lt;p&gt;The most effective way to replicate the functionality of LSTools within FOLIO would be to identify and replicate its generalized capabilities as part of the platform, and then glue them together with an app that provides an optimized UI for managing those capabilities.  Those capabilities are:&lt;/p&gt;

&lt;p&gt;	&lt;b&gt;1. Advanced querying of metadata records.&lt;/b&gt; A key component of FOLIO is a custom program called &apos;Harvest&apos; which uses flat-file extracts of binary MARC data from Voyager to do detailed searches of metadata.  It can select records on multiple criteria (including the absence of certain fields, specific subfields, etc.).  It can then output a list of record IDs, or specified fields from the records as tabular data.  Replicating Harvest directly would not be desirable (and probably not even technically possible, as a specification for the original program does not exist.  Previous attempts to re-implement the C program in perl did not succeed).  A modern implementation could likely be accomplished with a solr or elasticsearch index of appropriate configuration.&lt;br/&gt;
	&lt;b&gt;2. Algorithmic modification of metadata.&lt;/b&gt; The &quot;transform&quot; step of each process can be highly variable, if not unique.  Ideally, there would be a capability to insert arbitrary code functions within the framework to do metadata manipulation on the records selected in the first step.  There may be common cleanup tasks that could be pre-defined, but the ability to have technical staff craft new work here is key. This also goes beyond mere batch editing of the sort that can be done by MARCEdit.  Rather, it involves making policy/practice decisions up-front and encoding those decisions in an automated engine, greatly reducing the time spent on the day-to-day implementation of those practices.&lt;br/&gt;
	&lt;b&gt;3. Bulk loading of records into system.&lt;/b&gt; Currently, LSTools interfaces with the Voyager BULKIMPORT tool to load MARC records into Voyager.  An equivalent capability is needed here.&lt;br/&gt;
	&lt;b&gt;4. Scheduling of work.&lt;/b&gt; Currently, all jobs defined in LSTools can be run either as a cron job or manually via the web interface.  This allows regular activity to be pre-scheduled, but also allows one-off runs of a job to be invoked.  That is useful for both testing new jobs and for re-running a job that failed.&lt;br/&gt;
	&lt;b&gt;5. Reporting of results.&lt;/b&gt; The success (or failure) of any given job needs to be reported to appropriate staff, along with relevant information about the data handled by the job (number of records, etc.).  Currently this is done via e-mail, but could potentially be done within FOLIO.  Failures/problems should be escalated automatically for analysis and remediation.&lt;br/&gt;
	&lt;b&gt;6. Remote file interactions.&lt;/b&gt; A common function of LSTools jobs is to fetch metadata from vendors for loading into Voyager, or to send to an external party a set of records that was the result of a Harvest query.  The ability to fetch and push data sets via FTP, SFTP, and other relevant protocols is needed.&lt;/p&gt;

&lt;p&gt;Some of these capabilities may already exist within FOLIO or be on the roadmap.  The envisioned Workflow engine might provide the ability to drive jobs based on a schedule or a triggering event, and/or provide escalation response to a failed job.  A general-purpose metadata loader could likely serve as the interface for loading records in this context as well.  To the extent that these capabilities overlap with existing FOLIO tools, we should make use of existing functionality.&lt;/p&gt;</comment>
                                                            <comment id="11777" author="5af5e627525ba96b58654f12" created="Thu, 12 Jul 2018 15:25:03 +0000"  >&lt;p&gt;In Batch Loader subgroup mtg today, we were talking about LS Tools, Bulk Edit, and Open Refine. &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Af28d9e2e-c4bf-4283-a57d-136003c73648&quot; class=&quot;user-hover&quot; rel=&quot;557058:f28d9e2e-c4bf-4283-a57d-136003c73648&quot; data-account-id=&quot;557058:f28d9e2e-c4bf-4283-a57d-136003c73648&quot; accountid=&quot;557058:f28d9e2e-c4bf-4283-a57d-136003c73648&quot; rel=&quot;noreferrer&quot;&gt;Chris Manly&lt;/a&gt; I linked LS Tools and Bulk Edit since whatever development happens on these apps/services seems like it should be done in the context of each other. &lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Afeab5085-6c56-4f4a-957a-74f0c1088b9c&quot; class=&quot;user-hover&quot; rel=&quot;557058:feab5085-6c56-4f4a-957a-74f0c1088b9c&quot; data-account-id=&quot;557058:feab5085-6c56-4f4a-957a-74f0c1088b9c&quot; accountid=&quot;557058:feab5085-6c56-4f4a-957a-74f0c1088b9c&quot; rel=&quot;noreferrer&quot;&gt;Christie Thomas&lt;/a&gt; Also need to be taking scripts into account. And will need to think about how this may fit with Workflows app.&lt;/p&gt;</comment>
                                                            <comment id="11784" author="557058:096dafac-874f-4ff8-92d9-c3cec8655401" created="Thu, 28 Mar 2019 19:02:30 +0000"  >&lt;p&gt;Screenshot of main screen in LSTools &lt;/p&gt;

&lt;p&gt;&lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;10476_thumb&quot; href=&quot;/rest/api/3/attachment/content/10476&quot; title=&quot;LSTools Main Screen.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;10476&quot; file-preview-title=&quot;LSTools Main Screen.png&quot;&gt;&lt;jira-attachment-thumbnail url=&quot;https://folio-org.atlassian.net/rest/api/3/attachment/thumbnail/10476?default=false&quot; jira-url=&quot;https://folio-org.atlassian.net/rest/api/3/attachment/thumbnail/10476&quot; filename=&quot;LSTools Main Screen.png&quot;&gt;&lt;img src=&quot;https://folio-org.atlassian.net/rest/api/3/attachment/thumbnail/10476&quot; data-attachment-name=&quot;LSTools Main Screen.png&quot; data-attachment-type=&quot;thumbnail&quot; data-media-services-id=&quot;1f912c56-5c3e-43eb-b0c4-9b694a6200fe&quot; data-media-services-type=&quot;file&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/jira-attachment-thumbnail&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;</comment>
                                                            <comment id="11789" author="557058:096dafac-874f-4ff8-92d9-c3cec8655401" created="Thu, 28 Mar 2019 19:04:45 +0000"  >&lt;p&gt;LSTools &quot;Business Analysis&quot; screen describing the system&apos;s main functions&lt;/p&gt;

&lt;p&gt; &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;10475_thumb&quot; href=&quot;/rest/api/3/attachment/content/10475&quot; title=&quot;LSTools Features Desc.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;10475&quot; file-preview-title=&quot;LSTools Features Desc.png&quot;&gt;&lt;jira-attachment-thumbnail url=&quot;https://folio-org.atlassian.net/rest/api/3/attachment/thumbnail/10475?default=false&quot; jira-url=&quot;https://folio-org.atlassian.net/rest/api/3/attachment/thumbnail/10475&quot; filename=&quot;LSTools Features Desc.png&quot;&gt;&lt;img src=&quot;https://folio-org.atlassian.net/rest/api/3/attachment/thumbnail/10475&quot; data-attachment-name=&quot;LSTools Features Desc.png&quot; data-attachment-type=&quot;thumbnail&quot; data-media-services-id=&quot;e045725b-3ebf-48cf-b4a8-372117c5e510&quot; data-media-services-type=&quot;file&quot; style=&quot;border: 0px solid black&quot; /&gt;&lt;/jira-attachment-thumbnail&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;</comment>
                                                            <comment id="11793" author="557058:096dafac-874f-4ff8-92d9-c3cec8655401" created="Fri, 29 Mar 2019 19:37:20 +0000"  >&lt;p&gt;LSTools priorities spreadsheet from Cornell&lt;br/&gt;
 &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;/rest/api/3/attachment/content/10477&quot; title=&quot;LStools priorities with FOLIO issues.xlsx attached to UXPROD-949&quot; data-attachment-type=&quot;file&quot; data-attachment-name=&quot;LStools priorities with FOLIO issues.xlsx&quot; data-media-services-type=&quot;file&quot; data-media-services-id=&quot;98ec30d3-6bb5-475e-83f9-b90e57436315&quot; rel=&quot;noreferrer&quot;&gt;LStools priorities with FOLIO issues.xlsx&lt;sup&gt;&lt;img class=&quot;rendericon&quot; src=&quot;/images/icons/link_attachment_7.gif&quot; height=&quot;7&quot; width=&quot;7&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;</comment>
                                                            <comment id="11796" author="557058:096dafac-874f-4ff8-92d9-c3cec8655401" created="Fri, 29 Mar 2019 19:38:13 +0000"  >&lt;p&gt;LSTools / FOLIO critical needs statement from Cornell&lt;br/&gt;
 &lt;span class=&quot;nobr&quot;&gt;&lt;a href=&quot;/rest/api/3/attachment/content/10478&quot; title=&quot;LStools_Folio.docx attached to UXPROD-949&quot; data-attachment-type=&quot;file&quot; data-attachment-name=&quot;LStools_Folio.docx&quot; data-media-services-type=&quot;file&quot; data-media-services-id=&quot;66342a16-0c30-4ea2-ad96-ef743590dd49&quot; rel=&quot;noreferrer&quot;&gt;LStools_Folio.docx&lt;sup&gt;&lt;img class=&quot;rendericon&quot; src=&quot;/images/icons/link_attachment_7.gif&quot; height=&quot;7&quot; width=&quot;7&quot; align=&quot;absmiddle&quot; alt=&quot;&quot; border=&quot;0&quot;/&gt;&lt;/sup&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;</comment>
                                                            <comment id="11802" author="5c48911b54e1e6466b11f38c" created="Mon, 17 Apr 2023 19:22:00 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Aeb198214-3032-45c9-9781-9967c26deb3f&quot; class=&quot;user-hover&quot; rel=&quot;557058:eb198214-3032-45c9-9781-9967c26deb3f&quot; data-account-id=&quot;557058:eb198214-3032-45c9-9781-9967c26deb3f&quot; accountid=&quot;557058:eb198214-3032-45c9-9781-9967c26deb3f&quot; rel=&quot;noreferrer&quot;&gt;Thomas Trutt&lt;/a&gt; should this be closed?&lt;/p&gt;</comment>
                                                            <comment id="11806" author="5c48911b54e1e6466b11f38c" created="Tue, 18 Apr 2023 18:38:17 +0000"  >&lt;p&gt;Per Thomas at Cornell, this can be closed.&lt;/p&gt;</comment>
                    </comments>
                <issuelinks>
                            <issuelinktype id="10003">
                    <name>Relates</name>
                                            <outwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="10114">UXPROD-597</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="13692">UXPROD-868</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="13571">UXPROD-47</issuekey>
        </issuelink>
                            </outwardlinks>
                                                                <inwardlinks description="relates to">
                                        <issuelink>
            <issuekey id="13683">UXPROD-120</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="10473">UXPROD-594</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="29371">UX-52</issuekey>
        </issuelink>
            <issuelink>
            <issuekey id="13593">UXPROD-600</issuekey>
        </issuelink>
                            </inwardlinks>
                                    </issuelinktype>
                    </issuelinks>
                <attachments>
                            <attachment id="10475" name="LSTools Features Desc.png" size="183275" author="557058:096dafac-874f-4ff8-92d9-c3cec8655401" created="Thu, 28 Mar 2019 19:04:43 +0000"/>
                            <attachment id="10476" name="LSTools Main Screen.png" size="177374" author="557058:096dafac-874f-4ff8-92d9-c3cec8655401" created="Thu, 28 Mar 2019 19:02:03 +0000"/>
                            <attachment id="10477" name="LStools priorities with FOLIO issues.xlsx" size="13708" author="557058:096dafac-874f-4ff8-92d9-c3cec8655401" created="Fri, 29 Mar 2019 19:37:16 +0000"/>
                            <attachment id="10478" name="LStools_Folio.docx" size="14397" author="557058:096dafac-874f-4ff8-92d9-c3cec8655401" created="Fri, 29 Mar 2019 19:38:06 +0000"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10097" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>End date</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 30 Jun 2020 00:00:00 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10013" key="com.pyxis.greenhopper.jira:gh-epic-color">
                        <customfieldname>Epic Color</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>ghx-label-7</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10011" key="com.pyxis.greenhopper.jira:gh-epic-label">
                        <customfieldname>Epic Name</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Rewrite Cornell&amp;#39;s Web based LS-Tools (batch ETL tool)</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10012" key="com.pyxis.greenhopper.jira:gh-epic-status">
                        <customfieldname>Epic Status</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10016"><![CDATA[To Do]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10017" key="com.pyxis.greenhopper.jira:jsw-issue-color">
                        <customfieldname>Issue color</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>purple</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10019" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|hzyn87:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10095" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>Score</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>14.5</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10096" key="com.atlassian.jira.plugin.system.customfieldtypes:datepicker">
                        <customfieldname>Start date (migrated)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Wed, 1 Jan 2020 00:00:00 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Mon, 9 Jul 2018 20:48:27 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10025" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>[CHART] Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                    </customfields>
    </item>
</channel>
</rss>