You should still be able to get into the instance while it has an expired key ... you just can't make multiple simultaneous connections to it.  You can also grab the iris.dat files from the file system (which actually stores the globals) and then mount them to another instance.  Or you can just upgrade that instance to a new version of the Community Edition (which is likely the easiest approach)

It should be safe to edit manually as long as you are not changing the piece numbers or changing the order around.  Simply changing the property name within  <Value>...</Value> of the storage definition should be fine if it is no longer used at all.  In our case, we have had instances in the past where we needed to change a property name and rather than creating a new property and migrating the data it proved to be safe and much more efficient to change the property name in both the property definition and the storage definition (as well as all of the places in the source code which refer to it).  The nice thing about this approach is that we've been able to simply do a Find/Replace in all of the source code and carefully review the diffs before submitting.  

If others are aware of gotcha's when changing the storage definition Value, I would be interested in hearing them.

as Vivian explained, you can delete the property definition and then change the name in the storage definition to make it clear that that slot should be ignored.  This of course should be done while keeping versions of everything in source control so that the reason for the change is documented and discoverable in the future should someone need to understand why the property was removed.  

Thanks for quick fix @Evgeny Shvarov!!  Also, thanks for the details that some types are not supported, that is good to know.  At this point I think I am good with letting it take it's best guess and then editing the class afterwards if needed.  With SQL LOAD coming hopefully there will be less need to one-off utilities that do this but I am thankful that it was available for what I needed this week!!

Partially answered my own question ... if I edit the auto-generated class' When property and set it to %Library.DateTime, I can then call the generated Import() classmethod of the auto-generated class and import will succeed.  So I am able to push forward ... is this the intended path to do this?  

Should I create an issue for the DateTime column to be property set as a DateTime object and not a Date object?  

There appears to be an issue on Windows as it doesn't strip out the ":" from the filename when auto-generating the class( https://github.com/evshvarov/csvgen/issues/13). 

But beyond that I am stuck because is autodetecting my data/time column as Date and it is failing validation:

USER>s sc=##class(community.csvgen).Generate("C:\temp\badge\data.csv",,"my.data") 
USER>w $system.Status.GetErrorText(sc)                                          
ERROR #5540: SQLCODE: -400 Message: ERROR #5002: ObjectScript error: <ZODAT>zWhenOdbcToLogical+1^my.data.1  

This is that the file looks like:

What,Where,Who,When,CardNum,Fac/CustCode
Granted Access [31358],"MYSPACE ""IN"" READER","Smith, John",12/06/2021 03:46AM,31358,314

So it is blowing up when it tries to read "12/06/2021 03:46AM" into the When field, which it auto-generated as:

Property When As %Library.Date 

I could obviously hand-correct the auto-generated class but that wouldn't help if it just re-generates it the wrong way again when I try to do the import.

Any suggestions on a way around this?  Is there a way to force it to %Library.DateTime?  

Thanks!

Ben