Introduce a model to abstract SCM service integration

[finishes #80208778]
done.