If you’ve ever looked at the ODI Menu Bar or File menu, you’ve seen that there are two separate save options: Save and Save All.
Big deal, right? Everyone knows the difference between Save and Save All.
(If you don’t, Save will save only one object at a time, the active object you have open/are working on, whereas Save All will save all of the objects you have open, active or not.)
So, why have I taken the time to write a post about such a simple concept? It turns out that in ODI Studio, the Save vs. Save All options are differentiated by more than just the one vs. many concept. As a developer, being on the right side of this differentiator can save you a lot of time and grief.
When Save Does Not Actually Save
There are times that due to complexity (and, yes, at other times due to potential product bugs), ODI is not able to save an object after changes are made to it. Unfortunately, the fact that the object has not saved is not very clear. When you click the Save button, it activates, indicating the save is in progress. Eventually, it will return to its normal state, indicating the object has saved, right? Not necessarily.
The real answer as to whether your object has saved lies in the object’s displayed title. When an ODI object has changed since it’s last saved state, it will appear in italics.
If, after clicking Save, your object title still remains in italics, it has not actually saved!
As of the 12.1.3.0 version, when this occurs, ODI will not provide any additional information about why the object could not save, or even notify you that it has not saved. However, if you try to close out of the object at this point, ODI will notify you that the object has been modified and ask you if you want to save changes.
If you click Yes within this dialogue box, the object will close and it would seem that ODI has now saved your changes. However, when you reopen the object, you will see that the changes have not actually been saved.
As an aside, if you click Save again after noticing that your object title is still in italics after clicking it the first time, rather than trying to close out of the object, you will see that object title will go back to regular text. This seems to indicate that ODI has saved the changes. However, just like when closing out of the object and stating you wish to save changes, when you reopen the object, you will see that the changes have not actually been saved.
Save All Saves the Day
When faced with the “I clicked Save but my object didn’t actually save and I don’t know why” conundrum, what is a developer to do? Luckily, the Save All option is a hidden solution to this issue.
Unlike the Save option, the Save All option will give you an error message detailing why the Save task could not be completed for each affected object.
These error messages quite often will point you in the direction of where your issue has begun to occur, enabling you to either resolve the issue at its original pain point, more effectively research the Knowledge Base on Oracle Support, and/or open a more detailed Service Request, should it come to that.
But Exercise Caution!
I could not write this post in good conscience without throwing up a BIG warning about using Save All. You know what it means, so don’t throw all caution to the wind when you begin to leverage it — it will save every single object you have open. If you are developing on multiple objects and you are not ready to save the changes within all of them, do not use this option. If you need to leverage this option to discern what your un-saveable errors are, finish up your development work on all other objects before moving forward.