Version Graph is used to show from which other versions a version includes changes. Although for some projects this is implied from "semantic versioning" it may not be that simple for some projects, especially if you are developing customer specific solutions. But of course this problem is not specific to customer specific solutions, you may face this problem with any complicated version hierarchy. For example you may release two different customer specific versions for "Customer A" and "Customer B" and than later you may release a 3rd version which includes changes both from "Customer A" and "Customer B", that means your new version will include changes from both customer specific version. As your version graph goes larger it may be a problem to track which version contains changes from which other versions. Version Graph feature tries to answer this question. Once you define parent versions (a version may contain more than one parent version) of a version, it will create whole dependency graph for you and allow you to visualize and query this version graph with JQL and REST API.