Select to view content in your preferred language

Try the Classic Story Conversion Helper

8983
18
02-27-2023 02:58 PM
AbbyE_Esri
Esri Contributor
5 18 8,983

UPDATE: This converter has been enhanced and stabilized since it's initial release. It now also supports classic stories made with the cascade template. Check out this post for updated caveats and support for this tool.

If you attended the 2023 Federal GIS Conference earlier this month, you may have seen a sneak peak of an experimental tool that can help convert a story originally created in a classic Esri Story Maps templates to one created in ArcGIS StoryMaps. We know it can take some work to recreate a classic story, so we wanted to make this easier by providing a tool to reduce some of the work involved. This tool comes in the form of an ArcGIS Python Notebook: https://www.arcgis.com/home/item.html?id=bc35e93d5d374e1a9c3583be0cc9f1d7

What does it do?

There are instructions in the notebook for each step, but essentially you add your classic story ID, optionally reference a theme for the new story, and run the notebook script. The tool is easy to use and will not affect your original classic story.

A draft ArcGIS StoryMap will be created that contains the text, media, and maps from your original classic story. The title of the story will be brought over and the content from each section will be added to individual slides of a sidecar.

Here's a before and after example of a classic story and the ArcGIS StoryMaps version so you can see the results of running the tool.

Considerations

A few things to be aware of…

  • This tool currently supports migration of content from some classic Series and Journal stories (We now also support Cascade stories! Check this link for more information). You may have varying levels of success migrating a specific classic story depending on the amount and type of content in the story and if you made any customizations to it.

  • The notebook is meant to provide a starting point. It will help migrate your content to a new story. After that is done, you can expect to have to do some additional work to finalize your story after running the notebook.

  • Once the new story has been created, you can access all the images from the “This story” tab when adding media. This can help if you want to move media around to different places in your story.

  • Please ensure your ArcGIS administrator has assigned you permissions to access ArcGIS Notebooks, otherwise you will be unable to open the Notebook. For more information, see Control notebook user privileges—ArcGIS Notebook Server | Documentation for ArcGIS Enterprise.

  • If you don’t have privileges to use ArcGIS Notebooks, you can download the notebook and run it in a system configured with ArcGIS API for Python. Be sure to add your username and password (and portal URL if running on ArcGIS Enterprise) to the script where indicated. For information on running the notebook locally, see Get started | ArcGIS API for Python

Help us improve this tool

Please note that this isn’t a supported product; it’s a tool that’s provided as-is that can help save you time and effort in some situations. We are not planning to make regular additions or updates to this tool, but if there is enough generated interest in any particular enhancements to the Notebook, we will consider adding new capability in the future when feasible.

We hope the migration helper notebook can be a source of collaboration within the community. If you find items within the script that are not functioning as expected or could be improved, feel free bring up these concerns in the comments below. We hope that community members will work to improve the tool and build on it.

Let us know what you think

We’d love to hear your feedback about this tool in the comments section below! While it’s not able to magically convert every classic story you have, we do believe the notebook will greatly reduce the time required to remake some of the stories you’re looking to update to ArcGIS StoryMaps.

Resources

Below are some additional resources to help you get started with this Notebook and ArcGIS API for Python:

18 Comments
SadieSchoeffler
New Explorer

Thank you for sharing this tool. Will there be a conversion helper for Cascade Maps?

OwenGeo
Esri Notable Contributor

@SadieSchoeffler -- We are considering adding support for Cascade stories, but it will require a bit of additional effort. We'd like to get more feedback from the community on whether the current tool has been useful before spending time on adding new capabilities.

For anyone who has used this tool, what was your process for recreating your story and how was this notebook/script helpful? Did you encounter any issues or limitations? Do you have links you could share of the classic and recreated stories?

MarkusRasmusson
New Contributor

@OwenGeoWe still have many classic story maps that we need to migrate to ArcGIS StoryMaps, so this tool would be very helpful. However, when I run the script in ArcGIS Online I get the following error under imports:

ImportError: cannot import name 'Scales' from 'arcgis.apps.storymap' (/opt/conda/lib/python3.9/site-packages/arcgis/apps/storymap/__init__.py)

What causes this error? Am I missing something important?

ThePreatorian
Esri Contributor

@MarkusRasmusson  the Scales class for the StoryMaps module was added in the latest python API release. To fix this issue ensure the notebook you are using has the latest arcgis version installed, please run the last cell in the notebook before running any other cells.

If you want to confirm the correct version is installed in your notebook environment, add another cell to the notebook with the following code.

 

!conda list arcgis

 



When you run the code you should see the following output indicating v2.1.0.3 was successfully installed

ThePreatorian_0-1682685192473.png

 



MarkusRasmusson
New Contributor

@ThePreatorianThanks! It worked perfectly now. Thought I updated it before, but apparently not...

OwenGeo
Esri Notable Contributor
NickWeil
Regular Contributor

Hello,

I just upgraded my ArcGIS Enterprise from 10.9 to 11.1 and had not realized that I had a Classic Story Map application hosted in my Portal. I was trying to use the converter to restore the application, but keep getting this error: 

File C:\Program Files\ArcGIS\Pro\bin\Python\envs\arcgispro-py3\lib\urllib\request.py, in http_error_default:
Line 641:   raise HTTPError(req.full_url, code, msg, hdrs, fp)

HTTPError: HTTP Error 404: Not Found

 

OwenGeo
Esri Notable Contributor

@NickWeil -- Our team's python wizard is not available for a few days, but to me it looks like either Python, or a required module, is not installed on the machine you are trying to run the script.

If you need an immediate answer, please post on the Python questions board and I bet someone there should be able to help with this.

ThePreatorian
Esri Contributor

@NickWeil Have you been able to resolve the issue you have encountered with the converter? 

From the error it looks like the URL request is failing for a resource in your Classic Story. Do you know if the images in your classic story are being hosted in your enterprise server as items?


NickWeil
Regular Contributor

@ThePreatorian Unfortunately, I am not a python person, so I quickly abandoned the tool and started in to converting my story map manually. I just looked and my header does reference a logo that is published to my Portal.

JenFrazer_USFS_NR-GISS-IRIN
Occasional Contributor

Good day,

Checking if any updates are planned for this script/tool.  It appears to use the .get method which was deprecated since api Py version 2.2.0; removed in: 3.0.0. Documentation states to use content_list property instead, but my attempts to do so have led me to error chasing (I am barely crawling in the programming world).

TIA! Jen

ThePreatorian
Esri Contributor

@JenFrazer_USFS_NR-GISS-IRIN  Sorry that you ran into an issue with this tool. We are currently working on a way for us to share these tools in a way that will be able to support specific python versions.

I am not sure how you are running this script currently. But if you want to lock the version of python to 2.2.x you can run the following command in the jupyter notebook cell


!conda install -c esri "arcgis<2.3.0" --yes --force-reinstall

BrianRigwald
Emerging Contributor

Hello,

I'm a Social Studies teacher who has used ArcGIS online with students for years.  When we began using ArcGIS with students, we created many story maps that showcased GIS and they have become an integral part of our curriculum.  When we originally received the retirement announcement, we were assured that our story maps would continue to be usable and not be deleted.  I see that is now not the case. 😞

I'm not a developer and not a GIS professional.  I am self-taught with the classic ArcGIS online. (My colleague and I used to train other teachers in our state.)  Is there a way to convert our classic story maps?  I started to follow the instructions for using the conversion tool, but quickly got lost, as I'm not a developer/coder, so Python is no good for me.  

Is there a simpler way with easy GUI?  Is there a GIS professional out there that would be willing to voluntarily do the conversion for us?  Our story maps take students to various regions of the world, with embedded maps, images, videos, Google Street View experiences, etc... They took so many hours to put together, I can't imagine the time required to recreate all of them.

I normally don't ask for help like this, because I am techie and can normally figure things out, but this appears over my head. 😞

Thank you for listening and thank you for any suggestions you might have.

Brian Rigwald

7th Grade U.S. Studies

8th Grade Global Studies

OwenGeo
Esri Notable Contributor

@BrianRigwald -- The retirement of classic Esri Story Map templates has been moved back again to Q1 2026. An email about this went out to organization administrators last month, and other messaging is in the process of being updated. This is an extension to the previous retirement plan, which was shared back in 2022

PeterKnoop
MVP Regular Contributor

If one intends to run this Notebook in ArcGIS Online, then make sure to change the runtime from ArcGIS Notebook Python 3 Standard - 7.0, which is missing some of the required libraries, to ArcGIS Notebook Python 3 Standard - 10.0. (Do not go to 11.0 or above, as the API changes beyond 10.0 are not compatible with this Notebooks' code.)

TateFischer
New Explorer

I've used this tool in the past for a handful of classic story maps.  I have one stubborn web mapping application that gets hung up with the resulting error.  Any idea of what could be causing this problem?  This particular item was created the same exact way all of the others were that converted without a problem.  Thanks in advance, I appreciate it.

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
/tmp/ipykernel_36/2812262041.py in <cell line: 0>()
----> 1 convert_classic(classic_story_id,theme_id=theme_id)

/tmp/ipykernel_36/1650571555.py in convert_classic(itemid, theme_id)
   1133         classic_type = 'series'
   1134         print('converting Series')
-> 1135         convert_series_or_journal(itemid,theme_id=theme_id)
   1136     elif 'Cascade' in classic_keywords or 'cascade' in classic_keywords:
   1137         classic_type = 'cascade'

/tmp/ipykernel_36/1650571555.py in convert_series_or_journal(classic_story_id, theme_id)
    250             map_id = section.get('media').get('webmap').get('id')
    251             #Generate Map Content as a AGSM node
--> 252             map_node = sc.Map(item=map_id)
    253             map_item = Item(gis=gis_conn,itemid=map_id)
    254             #if no map extent information is found in the classic map, find extent of the AGO/Portal item and add to settings dict

/opt/conda/lib/python3.11/site-packages/arcgis/apps/storymap/story_content.py in __init__(self, item, **kwargs)
   1535             # Assign properties
   1536             self.node = "n-" + uuid.uuid4().hex[0:6]
-> 1537             self.resource_node = "r-" + item.id
   1538             self._path = item
   1539             self._type = item.type

AttributeError: 'NoneType' object has no attribute 'id'
ThePreatorian
Esri Contributor

@TateFischer That is strange. looks like the issue is the itemID is not being found. Is there a map  in the original classic story that is no longer available when viewing that Classic Story?

JesseJoe
Occasional Contributor

I tried using this tool to convert three of my classic Esri Story Maps into ArcGIS StoryMaps.

All three of my classic Story Maps are neither, Series, Journal nor Cascade stories, but are MapTour stories.

Can you please program the Classic Story Map Conversion Tool to be able to convert classic Story Maps that are the type: MapTour stories?

This will help me a great deal as I have three to convert, giving me real productivity so that I can leverage the latest capabilities of ArcGIS StoryMaps for my organization.