Code Monkey home page Code Monkey logo

smp-docs's Introduction

Subscription Management Documentation

Welcome to the open-source documentation of Subscription Management. Please review this README to understand how you can contribute to this documentation.

Getting Started

Contributing to open source is more than just providing updates, it's also about letting us know when there is an issue.

Prerequisites

You've decided to contribute, that's great! Contributing to the documentation requires a GitHub account. If you don't have an account, follow the instructions for the GitHub account setup.

License

Please refer to LICENSE for all Licensing information.

smp-docs's People

Contributors

isa-sen avatar joergrau avatar joshhighet avatar markvannoppen avatar vody avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

smp-docs's Issues

Account Access Group

As a customer, I want to be able to list users which will have a write access to a account setup so that information it will not be exposed to everyone in an organization

Feature: Account Access Group
  As a customer, I want to be able to list users which will have a write access to a account setup so that information it will not be exposed to everyone in an organization

  Scenario: Pre-defined permissions sets 
    When user installs a product into environment
    Then new 'SUBMGT, VIEW' and 'SUBMGT, SETUP' permissions sets will be created
    And 'SUBMGT, VIEW' permission set will be assigned to all users
    And 'SUBMGT, SETUP' permission set will be assigned to the user who initiated an installation.

  Scenario: 
    Given product installed into environment
    When user with write permissions to Account Setup table opens Account Setup page
    Then Account Setup page opens without any errors

  Scenario: 
    Given product installed into environment
    When user with read permissions to Account Setup table opens Account Setup page
    Then error message informs user that he do not have permissions defined

  Scenario: 
    Given product installed into environment
    When user with write permissions to Account Setup table opens Role Center
    Then subscription related notifications appear

  Scenario: 
    Given product installed into environment
    When user with read permissions to Account Setup table opens Role Center
    Then subscription related notifications do not appear

  Scenario: 
    Given product installed into environment
    When user with write permissions to Account Setup table opens Account Setup page
    And Sign-up for an account
    Then instruction on Account Screen informs him about 'SUBMGT, SETUP' permissions set which should be defined for any user which would have edit account access

AB#7764

Sales Through Partners

imageAs a publisher, I would like to automatically transfer implementation commission to my partners so that I can make partner channel billing transparent and decrease a cost of my partner channel operations

Feature: Sales Through Partners
  As a publisher, I would like to automatically transfer implementation commission to my partners so that I can make partner channel billing transparent and decrease a cost of my partner channel operations

  Scenario: Setup commission
    When publisher on-boards with SMP and fills implementation partner commission percent
    Then this information will be recorded within SMP

  Scenario: Enable link partner to customer subscription
    Given publisher define a default implementation commission
    And product installed into customer environment
    When customer login for a new account
    Then a new "Partner ID" non-mandatory text field will be available on a Account Info Screen
    And it will be not editable after it's defined on a account screen 

  Scenario: Enable sign up as implementation partner
    Given publisher define a default implementation commission
    And implementation partner has it's own valid Stripe account
    And product installed into customer environment
    And customer login for a new account
    When customer (with partner assistance) enters a "Partner ID" with a Partner's Stripe Account ID 
    Then system checks if defined account id is linked to a platform and allowed to proceed
    But if defined account id is not linked to a platform
    Then system will popup with a message which direct partner to sign-up with a platform before proceeding

  Scenario: Link partner to customer subscription
    Given publisher define a default implementation commission
    And implementation partner has it's own valid Stripe account
    And product installed into customer environment
    And customer login for a new account
    And customer (with partner assistance) enters a "Partner ID" with a Partner's Stripe Account ID which is linked to a platform
    When new product subscription created
    Then system will record Partner's Stripe Account ID against customer product subscription
    And on every successful invoice payment it will automatically creates a transfer from publishers to partners account a commission amount equal to customer subscription invoice before tax amount multiplied by default implementation commission percent

AB#7761

Select a product plan sorting

Describe the bug
It's unclear how the rows are sorted within a product plan lookup.

To Reproduce
Steps to reproduce the behaviour:

  1. Setup multiple product prices
  2. Go to Account Setup
  3. Click on the plan name to open a plan lookup page on a Subscription Information screen.
  4. See sorting issue

Expected behaviour
Instead of a current (random) sorting, it's expected to be sorted by "Payment Interval" and then by "Price" so that smaller would appear at the top.

Screenshots
MicrosoftTeams-image (2)

Multi-Production Tenant

As a enterprise customer with multiple production environments per subsidiary operating within a single AAD tenant, I want to be able to enable each subsidiary to have a separate account so then each will manage it's own billing and product suite

Feature: Multi-Production Tenant
  As a enterprise customer with multiple production environments per subsidiary operating within a single AAD tenant, I want to be able to enable each subsidiary to have a separate account so then each will manage it's own billing and product suite. 

  Background:
    Given a customer user assigned to AAD administrative unit

  Scenario: Customer Sign-up With Microsoft Account linked to Administrative Unit
    Given user are on Intro Screen
    When user sign-in with Microsoft account
    Then Account Info screen will be presented linked to tenant+administrative_unit account identifier

AB#7766

APM Tracing

As a product team we would like to be able to access to each an every trace execution including stack tree, duration, error code from production environments so then we can effectively improve a solution and better prioritize our backlog

Feature: ARM Tracing
  As a product team we would like to be able to access to each an every trace execution including stack tree, duration, error code from production environments so then we can effectively improve a solution and better prioritize our backlog

  Scenario: Log traces
    Given application installed on any environment
    When any application logic executes
    Then application records it's exception send this to log server without any overhead

  Scenario: Review traces
    Given application delivers execution traces to a log server 
    When developer access a log server
    Then developer can view an average execution timeline as well as dive into a individual trace waterfall view

  Scenario: Partner Support
    Given application delivers execution traces to a log server
    And customer contact publisher
    When publisher forward us a customer request 
    Then original customer request will include a trace identifier which our product team will be able find on a log server

AB#7763

OAuth Fallback to "Tenant" Auth (Cloud-Only)

As a customer, I want to be able to activate an extension even if there are SSO restrictions in my organization so that it will not block my setup progress

Feature: OAuth Fallback to "Tenant" Auth
  As a customer, I want to be able to activate an extension even if there are SSO restrictions in my organization so that it will not block my setup progress

  Scenario: 
    Given product installed into the SAAS environment
    When a user which belongs to the current environment opens the Account Setup page
    Then Account Information screen opens with predefined information from the environment instead for Graph

To identify if user belongs to the current environment we can call https://login.microsoftonline.com/<user email domain part>/.well-known/openid-configuration and compare it with a current environment tenant id and if it match then user belongs to current tenant so we may allow him to sign up without SSO

AB#7759

User Manual

As a publisher, I want to have a most up to date user manual on how to activate my application generated for me so that I do not need to maintain it by myself.

Feature: Publisher Key
  As a publisher, I want to have a most up to date user manual on how to activate my application generated for me so that I do not need to maintain it by myself. 

  Scenario: TBD based on publishers initial feedback

AB#7757

System refresh trial with second product subscription created

When there is one product subscription created and trial expires and then when second product subscription created, system refresh first product subscription trial.

Steps to reproduce the behavior:

  1. Account with one product subscription expired
  2. Second product plan selected
  3. user finish a process
  4. first subscription updated! + trial period refreshed!

Expected behavior

first subscription should not be updated at all.

AB#7770

Pricing Cards

imageAs a publisher, I want to visualize product prices in a pricing table so that improve pricing visibility for a customer and increase conversion
image

Feature: Pricing Cards
  As a publisher, I want to visualize product prices in a pricing table so that improve pricing visibility for a customer and increase conversion. 

  Background:
    Given a publisher defined multiple prices for product A:
      | Name        | Currency | Interval | Price |
      | Starter     | NZD      | Monthly  | 100   |
      | Starter     | NZD      | Annually | 1000  |
      | Starter     | AUD      | Monthly  | 80    |
      | Starter     | AUD      | Annually | 800   |
      | Business    | NZD      | Monthly  | 300   |
      | Business    | NZD      | Annually | 3000  |
      | Business    | AUD      | Monthly  | 240   |
      | Business    | AUD      | Annually | 2400  |

  Scenario: Open pricing table
    Given account currency equal to NZD 
    And user are on Subscription Info Screen
    When user click on select plan
    Then new lookup page opens
    And there are only prices for NZD currency visualizes as cards grouped by name
    And each card incudes name, description, features, amount, unit, interval

AB#7767

Usage API

As a publisher, I want to be able to use a usage based pricing models "Metered" (https://stripe.com/docs/billing/subscriptions/metered) so that will allow me to enable "pay just for used" for my customers
image

Feature: Usage API
  As a publisher, I want to be able to use a usage based pricing models so that will allow me to enable "pay just for used" for my customers 

  Scenario: Report usage
    Given product installed into environment which use a metered pricing
    When product application use a Usage API to increment a usage
    Then reported usage is recorded in Stripe against customer product subscription

  Scenario: Report usage for non-metered pricing product
    Given product installed into environment which not use a metered pricing
    When product application use a Usage API to increment a usage
    Then system will not failed, but return a response to application that this will not be done

  Scenario: Delayed usage report
    Given product installed into environment which use a metered pricing
    When product application use a Usage API to increment a usage and identified that this should be done not in a user real time
    Then reported usage will be recorded in Stripe against customer product subscription not in a user runtime (in background or on signout)

AB#7762

No notification for pastDue status

User is not getting any notifications when subscription status is pastDue.

To Reproduce

Steps to reproduce the behavior:

  1. Create new subscription with trial period
  2. Wait for subscription trial period expires + graceful period
  3. Open Role Center
  4. No notification displayed

Expected behavior

There should be a notification which follow user to a payment method screen

AB#7756

Cannot finish with payment method exists

User unable to compile a setup with version 1.1.1.0 with existing payment method

Steps to reproduce the behavior:

  1. Open Account Setup for existing account with payment method
  2. Perform any change except Payment Method
  3. Click finish
  4. Got error that payment method is not defined

Expected behavior

No error appears and system allows to proceed

AB#7769

Trial expiers before Payment date

Describe the bug
There are customers who reported cases when the system shows that a trial is expired, but Stripe did not execute a payment yet.

To Reproduce
Steps to reproduce the behaviour:

  1. Sign up with an account with a payment method defined
  2. Check a role centre 12 hours before the trial is about to expire.

Expected behaviour
No notification will pop up.

Screenshots
image

Additional context
this may be due to a UTC vs Local time zone cooperation for a trial period expiration.

Publisher Key

As a publisher, I want to avoid using my Stripe Secret Key for an integration purpose so that my Stripe account will not be exposed in case of application hijacking.

Feature: Publisher Key
  As a publisher, I want to avoid using my Stripe Secret Key for an integration purpose so that my Stripe account will not be exposed in case of application hijacking. 

  Scenario: Generate Publisher Test and Live Keys
    When publisher on-boards with SMP
    Then system generates a Publisher Test and Live Keys an present it to publisher

  Scenario: Integration Using Publisher Test Key
    Given publisher connected with SMP
    And Publisher Test and Live keys has been generated
    When publisher using Publisher Test Key instead of a Test Secret Key within an Subscription Management API
    Then system authorize publisher within a platform using Publisher Test Key

  Scenario: Integration Using Publisher Live Key
    Given publisher connected with SMP
    And Publisher Test and Live keys has been generated
    When publisher using Publisher Live Key instead of a Live Secret Key within an Subscription Management API
    Then system authorize publisher within a platform using Publisher Live Key

AB#7758

Linked Entitlement

Price per Environment

As a publisher, I want to be able to use environment as a product pricing unit so that my customers will pay for each environment where my application is installed

Feature: Price per Environment
  As a publisher, I want to be able to use environment as a product pricing unit so that my customers will pay for each environment where my application is installed

  Background:
    Given a publisher product unit equal to environment 

  Scenario: Product installed into first environment
    When user installs a product into first environment 
    Then product quantity will be defined as 1
    And product quantity will not be editable from API

  Scenario: Product installed into second environment
    Given product installed on a first environment 
    When user installs a product into second environment 
    Then product subscription quantity updated to 2
    And product quantity will not be editable from API

  Scenario: Product uninstalled from first environment
    Given product installed on a first environment 
    And product installed on a second environment 
    When user uninstalls a product from first environment 
    Then product subscription quantity updated to 1
    And product quantity will not be editable from API

AB#7765

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.