Set individual price per instance

Headline:
Have individual price plans per-instance


Description:
Our pricing model is quite complex - there are a lot of variables and options for provisioning of an instance, and discounts can also be applied for some customers. Additional software and services as part of a managed service offering cannot currently be costed by Morpheus.


Example/Use case(s):
When provisioning an instance, we would ideally like the ability to obtain a price from an external source (our quoting tool) or at least have the facility to set a price per-instance (eg. £30/month). At the moment the only way I can see to do this at present is to have a price / price set / plan created for each instance, which isn’t sustainable.


Hi @markp ,

I believe this can already be performed utilizing the price phase in a provisioning workflow. See this reference here

Ah, this is interesting… OK. I’ll take a look at this to see if it’ll work for us.

This should solve a lot of our problems, but we’ll need to wait for this functionality to become part of the LTS release to make use of it (hopefully soon!).

Will this just determine a price at the time of provisioning, or will the task always be used to generate pricing (for example, if there is a change to our pricebook, would the price shown in the UI update or would it be fixed at the price calculated by the task at the time of creation?)

Finally got round to trying this out, and so far seems to do exactly what we need.

A minor suggestion, could the instance order form show a placeholder for the cost when the plan selection is changed. There is a delay in the script retrieving pricing from an external source.
I can partially overcome it with some custom CSS and HTML but would be good if this was implemented properly within the UI:

Whitelabel CSS override:

span.plan-price:empty::before {
    content: 'Calculating cost...';
    display: inline-block;
}

And a little bit of Javascript:

<script>
  $('#tmp-plan-select').on('change', function() {
    $(".plan-price").html("");
  });
</script>