Pricing

MDriven Turnkey price and pricing are available on portal.mdriven.net

The easiest way to pay your way is via MCoins, as explained on this page - but we also offer a traditional calendar-based license.

The pricing model is explained in this video:

FAQ Pricing

How are the Following Elements Defined & Quantified?

"Inclusive Add Ons?" - This is part of the total price built up by checking the various AddOn buttons. When doing a price calculation for the OnPremises License, we go with ALL the add-ins checked, since you are likely to make use of the offered extra service that the add-on provides when you control your environment yourself.

"Better CPU & RAM?" - We run multiple WebApplications on the S1 tier. We can put your WebApplication in a better and/or less crowded tier to improve the CPU & RAM situation.

"Data out from Site?" - Does this include large cross-referenced documents stored in a filesystem outside the main database? Azure measures and charges data out from the site - we follow the same logic. Data up to the site is currently free, but data down to the client will be included.

"Priority Support?" - We will always try to help you swiftly, but we will help Priority support holders first.

"Control Core Deployment?" - It is practical for us to choose when to upgrade your server software. It might not be best for you to not be in control when this happens. For an extra fee, we communicate and find a time that works for us both.

"Region Placement?" - It is practical for us to place your service in a data center where we have a slot open. However, it might be better for you to get a data center closer to you or your customers.

"Always On?" - We execute many sites, most are not in production, and we can save CPU and Memory by spinning down sites that are not in use. This is a pain however for the user that wakes the site up - since it takes 50-60 secs typically. For production, you want AlwaysOn.

"MDriven Framework Option?" - The MDrivenFramework is a Visual Studio plugin. It gives you the model in c# code and you can fill in methods with standard c#. This is great for doing EVERYTHING we did not think of.

"History Server Option?" - In a brilliant but simple stroke, you can install a HistoryServer that keeps all the writes your system does in a separate database. Nothing is ever overwritten and everything gets time stamps. In MDriven, you can set this class by class by setting IsVersioned - but HistoryServer has every class as IsVersioned. It is an extremely powerful technology that evolves itself to follow your current model.

How does licensing of MDriven Designer work if I have the free version (allowing 50 classes) and I want to use more classes? The Turnkey pricing seems to suggest that this is included but how would I unlock the 50-class limit? When you use MCoins to pay for services, the 50 class limit is removed and there is no limit. The days when you use the MDrivenDesigner with a large model will consume more MCoins than days when you use smaller models.

Would costs be reduced if I am hosting on my own Azure account? - Not necessarily; but your control and ability to scale and move will be better. In the long run, you will likely want to have your own cloud service provider (Azure or AWS or anything that runs Turnkey (currently IIS)). When you have your own, you pay the provider for all resources and pay us only for tool usage, license, and support.

Finally, how would one calculate the cost for a SaaS where each tenant has their own database? In the price calculation, you have the "Price from execution incl add-ons." Take this price times the number of sites. If you have 50 customers, you have 50 sites. The development is shared on the 50, so "Price from development" times 1.

Billing Technically Explained

The billing run takes 2 runs. The first run looks at Site/MDriven Server usage:

self.EffectivePayerFor->collect(tk|
  let mserv=tk.MDrivenServerIds->orderby(lastSeenTransaction)->last in
  (
     let p=PriceSingleton.oclSingleton.CurrentPrice in
    (
       let cost=mserv.classCountA0*p.DailyPerSitePerClass +
                mserv.viewCountA0*p.DailyPerSitePerView +
                p.DailyPricePerGigaByte*tk.UsedData+
                p.DailyPricePerSite+
                p.PerEndUserVolumePrices->collect(x|x.GetPricePartIfApplicable(tk.EndUserCount))->sum in
       (
           self.MCoinAccount.Credit(-cost,'Execution '+tk.IdName+' classes:'+mserv.classCountA0.asstring+' views:'+mserv.viewCountA0.asstring+' users:'+tk.EndUserCount.asstring+' data:'+tk.UsedData.asstring,false)
        )
     )
   )
)

The second pass looks at you as a developer and how you used the MDriven Designer (or Framework) tools yesterday:

    let viewcount=licensechecks->orderby(x|x.MDrivenViews)->last.MDrivenViews in
    (
      let classcount=licensechecks->orderby(x|x.MDrivenClasses)->last.MDrivenClasses in
      (
        let cost=viewcount*PriceSingleton.oclSingleton.DailyPerDesignerPerView + classcount*PriceSingleton.oclSingleton.DailyPerDesignerPerClass in
        (
          self.MCoinAccount.Credit(-cost,'Designer usage, '+viewcount.asstring+' views, '+classcount.asstring+' classes',false)
        )
      )
    )
This page was edited more than 6 months ago on 06/17/2024. What links here