<!-- 
RSS generated by JIRA (1001.0.0-SNAPSHOT#100246-sha1:7a5c50119eb0633d306e14180817ddef5e80c75d) at Fri Feb 09 00:08:52 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-571] Bulk Import for Locations</title>
                <link>https://folio-org.atlassian.net/browse/UXPROD-571</link>
                <project id="10000" key="UXPROD">UX Product</project>
                    <description>&lt;p&gt;&lt;b&gt;Current situation or problem&lt;/b&gt;:&lt;br/&gt;
Many institutions have hundreds or thousands of location records and the manual setup mechanism is going to be burdensome when you have many to create (e.g. during system implementation).  &lt;/p&gt;

&lt;p&gt;It&apos;s desirable to have the ability to import a large number of locations at once.&lt;/p&gt;

&lt;p&gt;The existing APIs provide infrastructure to create each layer of the location structure one-by-one, and that is, for some institutions, an acceptable workaround. E.g., see this example code from EBSCO: &lt;a href=&quot;https://github.com/FOLIO-FSE/shell-utilities/blob/master/locations-add&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://github.com/FOLIO-FSE/shell-utilities/blob/master/locations-add&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For almost all libraries, it would be acceptable to create institutions, campuses, and libraries through the FOLIO UI, and then be able to upload locations through a bulk file upload. This feature is meant to encompass the work just for to upload locations. In the future, it may be desirable to expand it to all four levels of the location tree.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;In scope&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Development of a UI interface that allows for the upload of a CSV file with all the required fields to create locations&lt;/li&gt;
	&lt;li&gt;Backend work to validate the CSV file, parse the fields, lookup UUID values as needed, and send it to the location creation API&lt;/li&gt;
	&lt;li&gt;Reporting back to the user (view download or UI) which rows in the data were created, and which rows failed.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Out of scope&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;New permissions - if a FOLIO user has the ability to CRUD locations via the FOLIO UI, they have the ability to bulk create locations via this workflow.&lt;/li&gt;
	&lt;li&gt;Bulk modification / deletion - that is listed as a use case for the Bulk Edit app (&lt;a href=&quot;https://folio-org.atlassian.net/wiki/display/BULKEDIT/Bulk+Edit+Use+Cases&quot; class=&quot;external-link&quot; rel=&quot;nofollow noreferrer&quot;&gt;https://folio-org.atlassian.net/wiki/display/BULKEDIT/Bulk+Edit+Use+Cases&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Validation of the CSV file prior to attempting creation&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Use case(s)&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;A regional library repository service wishes to implement FOLIO to manage library loans. They maintain thousands of locations that correspond to the locations used by their customer institutions. When implementing FOLIO, they need to export locations from their old system, and import them into their new system.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Proposed solution/stories&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;On the locations view pane, add an Action menu with an option for &quot;Import&quot;&lt;/li&gt;
	&lt;li&gt;From Action &amp;gt; Import, provide a pop-up modal that allows for uploading the file, previewing the results, and then committing the bulk import.&lt;/li&gt;
	&lt;li&gt;The CSV file would need the following columns (if a field is optional, the library would just leave it blank)
	&lt;ul&gt;
		&lt;li&gt;Institution&lt;/li&gt;
		&lt;li&gt;Campus&lt;/li&gt;
		&lt;li&gt;Library&lt;/li&gt;
		&lt;li&gt;FOLIO name&lt;/li&gt;
		&lt;li&gt;Remote storage value (Y/N)&lt;/li&gt;
		&lt;li&gt;Code&lt;/li&gt;
		&lt;li&gt;Discovery display name&lt;/li&gt;
		&lt;li&gt;Associated primary service point&lt;/li&gt;
		&lt;li&gt;Status (Active / Inactive)&lt;/li&gt;
		&lt;li&gt;Description&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;&lt;b&gt;Links to additional info&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Questions&lt;/b&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;For the CSV file, what kind of data would you input - code, UUID, some combination? We&apos;d need to document the expected inputs.&lt;/li&gt;
	&lt;li&gt;How would you handle a scenario where a library wanted to add multiple secondary service points? That is rare, but the UI does accommodate that. Would bulk import simply not allow that?&lt;/li&gt;
&lt;/ul&gt;
</description>
                <environment></environment>
        <key id="13031">UXPROD-571</key>
            <summary>Bulk Import for Locations</summary>
                <type id="10002" iconUrl="https://folio-org.atlassian.net/rest/api/2/universal_avatar/view/type/issuetype/avatar/10322?size=medium">New Feature</type>
                            <parent id="13649">UXPROD-771</parent>
                                    <priority id="10003" iconUrl="https://dev.folio.org/assets/jira-priority/jira-p4.svg">P4</priority>
                        <status id="10000" iconUrl="https://folio-org.atlassian.net/images/icons/statuses/generic.png" description="(Migrated on 4 Feb 2024 13:41 UTC)">Draft</status>
                    <statusCategory id="2" key="new" colorName="blue-gray"/>
                                    <resolution id="-1">Unresolved</resolution>
                                                        <assignee accountid="63ca7ffe176040ff3bd287dd">Anne Ekblad</assignee>
                                                                <reporter accountid="5af5ed55244bc90a106063c7">Cate Boerema</reporter>
                                    <labels>
                            <label>bulk-api</label>
                            <label>enettifee-reviewed</label>
                            <label>locations</label>
                    </labels>
                <created>Tue, 15 May 2018 12:40:54 +0000</created>
                <updated>Tue, 22 Aug 2023 14:51:31 +0000</updated>
                                                                                <due></due>
                            <votes>0</votes>
                                    <watches>4</watches>
                                                                <comments>
                                                            <comment id="15466" author="712020:9b968d11-9a20-421f-9cde-4d339f963026" created="Tue, 26 May 2020 15:45:38 +0000"  >&lt;p&gt;Duke feels that the batch importer will be not useful without this Jira.&lt;/p&gt;</comment>
                                                            <comment id="15469" author="557058:c2016f82-853d-4e7b-8b4e-b36b5d997f56" created="Wed, 23 Sep 2020 20:29:14 +0000"  >&lt;p&gt;Has anyone tested the suggested work-around?  If accessing the API does work, then this UX-Prod could be/should be updated.&lt;/p&gt;</comment>
                                                            <comment id="15473" author="5c48911b54e1e6466b11f38c" created="Mon, 25 Jan 2021 15:13:06 +0000"  >&lt;p&gt;&lt;a href=&quot;https://folio-org.atlassian.net/secure/ViewProfile.jspa?accountId=557058%3Ac2016f82-853d-4e7b-8b4e-b36b5d997f56&quot; class=&quot;user-hover&quot; rel=&quot;557058:c2016f82-853d-4e7b-8b4e-b36b5d997f56&quot; data-account-id=&quot;557058:c2016f82-853d-4e7b-8b4e-b36b5d997f56&quot; accountid=&quot;557058:c2016f82-853d-4e7b-8b4e-b36b5d997f56&quot; rel=&quot;noreferrer&quot;&gt;Jacquie Samples&lt;/a&gt; yes the work-around is how we have done all of our configurations at Duke, so I&apos;ll update that field to reflect that.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10053" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Back End Estimate</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10121"><![CDATA[Medium < 5 days]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10054" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                        <customfieldname>Back End Estimator</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10000" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummarycf">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10014" key="com.pyxis.greenhopper.jira:gh-epic-link">
                        <customfieldname>Epic Link</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue key="$xmlutils.escape($text)">Locations and Service Points</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                        <customfield id="customfield_10050" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Front End Estimate</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10097"><![CDATA[Medium < 5 days]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10051" key="com.atlassian.jira.plugin.system.customfieldtypes:userpicker">
                        <customfieldname>Front End Estimator</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>557058:b8e64633-1f7c-402d-9caf-9959a5ba5d0d</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_10063" key="com.atlassian.jira.plugin.system.customfieldtypes:float">
                        <customfieldname>PO Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>20.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10064" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>PO Ranking Note</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2020-10-04 - CB: Making my PO rank same as the calculated total rank for now.&lt;br/&gt;
2019-07-12: Keeping PO rank same as calculated rank (with potential minor adjustments to avoid having two features with same rank)</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10045" key="com.atlassian.jira.plugin.system.customfieldtypes:textarea">
                        <customfieldname>Potential Workaround</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Erin Nettifee: This can be worked around by using the location APIs to create items on the location tree.</customfieldvalue>

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

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10071" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: 5Colleges (Full Jul 2021)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10227"><![CDATA[R5]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10067" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: Chalmers (Impl Aut 2019)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10207"><![CDATA[R5]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10068" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: Chicago (MVP Sum 2020)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10212"><![CDATA[R5]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10069" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: Cornell (Full Sum 2021)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10217"><![CDATA[R5]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10070" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: Duke (Full Sum 2021)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10221"><![CDATA[R4]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10073" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: FLO (MVP Sum 2020)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10237"><![CDATA[R5]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10074" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: GBV (MVP Sum 2020)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10242"><![CDATA[R5]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10077" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: Hungary (MVP End 2020)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10253"><![CDATA[R1]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10078" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: Lehigh (MVP Summer 2020)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10262"><![CDATA[R5]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10079" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: Leipzig (Full TBD)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10267"><![CDATA[R5]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10089" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: TAMU (MVP Jan 2021)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10318"><![CDATA[R5]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                            <customfield id="customfield_10091" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: U of AL (MVP Oct 2020)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10328"><![CDATA[R5]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                    <customfield id="customfield_10076" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Rank: hbz (TBD)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="10248"><![CDATA[R1]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10020" key="com.pyxis.greenhopper.jira:gh-sprint">
                        <customfieldname>Sprint</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10024" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>[CHART] Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Tue, 26 May 2020 15:45:38 +0000</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                </customfields>
    </item>
</channel>
</rss>