This should do this safely. Right now, if an existing workspace already exists with the same name as an external source, this method will overwrite it. That has to be changed.