Place Order APIs
Implementation Guide for Distributor
Contents
1 Introduction 4
1.1 Overview 4
1.2 Supporting Resources 4
1.3 Intended Audience 4
2 Renewable Orders Overview 5
3 Available Place Order APIs 6
4 Business Problems addressed by Place Order APIs 8
5 Environment URLs 10
6 Other URLs 10
7 Onboarding process – How do I get started? 11
7.1 Staging Environment 12
7.2 Implementation 13
7.3 Testing 13
8 Place Order API implementation Best Practices 17
9 Workflows for Distributors 20
9.1 New Business Workflow 20
9.2 Addition Workflow 22
9.3 Renewal Workflow 24
9.4 Maintenance to Subscription Switch Workflow 26
9.5 Positive contract extension 27
9.6 System feeding 29
10 End to End process flow 30
2
Tables
Table 1: APIs available for Distributors 7
Table 2: Use Cases 9
Table 3: Environment URLs 10
Table 4: Other Useful URLs 10
Table 5: Implementation Best Practices 19
Table 6: GetOrderStatus response Statuses 22
Table 7: Invoice Generation Job schedule 22
Table 8: Pro-rating calculation 23
Table 9: Invoicing in Addition scenarios 24
Table 10: Opportunity Statuses 26
Figures
Figure 1: High-Level Place Order API Integration diagram 6
Figure 2: Test Kit - Summary tab 14
Figure 3: Test Kit - Test Sheet tab 14
Figure 4: Test Kit - SKU List tab 15
Figure 5: New Business Workflow implementation example 20
Figure 6: Addition Workflow implementation example 23
Figure 7: Renewal Workflow implementation example 25
Figure 8: M2S Workflow implementation example 27
Figure 9: System feeding implementation example 29
Figure 10: End-to-End example workflow 30
3
Revision history
VERSION DATE AUTHOR COMMENTS
1.0.0 Jul 18, 2019 Jordi Gilabert • Initial Draft
1.0.1 Jul 30, 2019 Jordi Gilabert • Major Document update
1.0.2 Sep 3, 2019 Jordi Gilabert • Fixed Figure 1 to clarify wait times for emails and invoices
• Replaced “API Request response
parameters” by “API Services Manuals” in section 6
• Updated list of services required to be implemented in section 7.2
• Minor adjustments in section 9 1.0.3 Jan 14, 2020 Jordi Gilabert • Added GetPartNumber and
GetSubscriptionData in Table 1, Table 2 and Table 5
• Added Positive Extension functionality in Section 9.5
• Added System feeding in Section 9.6
4
1 Introduction
1.1 Overview
Autodesk Partner Web Services is an automation solution for order placement directly from its partners to Autodesk, featuring low-touch from partners and zero-touch from Autodesk. This new business capability enables true B2B web service transactions between partners and Autodesk.
For partners to effectively implement Autodesk web services, partner developers should be familiar with REST web services, OAuth, and JSON.
1.2 Supporting Resources
Autodesk Partner Developer Portal: The Autodesk Partner Developer Portal offers a place for partner developers to build and test their own applications by subscribing to Autodesk web services and helps partners get connected with Autodesk. The Partner Developer Portal features a robust repository of service documentation, provides an ongoing conduit to the services to support partner teams, and features a community to allow partner developers to share insights and information with each other. A partner administrator can invite and keep track of all the developers associated with the account and all the details of the applications they submit. Developers can then explore the information related to a service, understand the way the service works, and test the service to see how it works with their applications. For more information, please visit the Partner Developer Center.
Authentication API Documentation: This documentation guides partners through the process of generating credentials, signatures, and access tokens necessary for utilizing service APIs. It also covers the development of a partner’s integrating application. It provides basic information on web service integration and demonstrates the development of a typical application. For more information, please check the latest version of the API Authentication Guide.
1.3 Intended Audience
This guide is designed to teach Technical Architects, Technical Consultants, and Developers about Autodesk’s APIs, the onboarding process, and API implementation guidelines.
5
2 Renewable Orders Overview
When customers subscribe to a service under the renewable order model, the subscription will be active for the term selected in their subscription (annual or multi-year). The subscription can be renewed 90 days prior to the end of the term.
This document will include various scenarios which are eligible for order generation or agreement modification within the Autodesk environment. The details of the services included in the order fulfillment process can be found below:
• Submitting new renewable orders.
• Adding seats to existing renewable agreements.
• Adding products to existing renewable agreements.
• Renewing an existing contract.
• Switching an existing Maintenance contract to a new Subscription contract (also known as M2S).
• Extending a contract to align with another.
6
3 Available Place Order APIs
Figure 1: High-Level Place Order API Integration diagram
We recommend implementing the APIs in the following order.
# SERVICE NAME DESCRIPTION RESOURCES
1 GetMyPrice During order creation, provides the price the Partner is paying on that particular order (e.g., if adding to an existing contract, the price on the order may need to be pro-rated).
/v1/sku/prices
2 PlaceOrderV2 Consists of operations which handle order creation, order renewal, adding seats and products to
existing agreements, as well as switching from a maintenance to a subscription contract or extending a contract.
/v2/orders/fulfillment
3 GetOrderStatus Checks what is the current status of an order
request. /v1/orders/status
4 GetOrderDetails Get Order List: Retrieves a list of high-level order information based on a date range.
Get Order Details: Retrieves detailed Autodesk Order information.
/v1/orders
5 GetInvoice Get Invoice List: Retrieves invoice list from the back end for the Partner based on a date range.
Get Invoice Details: Retrieves the full detail for a specific invoice.
/v1/invoices
7
# SERVICE NAME DESCRIPTION RESOURCES
6 GetLicense Retrieves asset information for the
given serial number(s). /v3/license
7 GetOpportunity Get Opportunity List: Retrieves a list of high-level opportunity information
based on a date range
Get Opportunity Details: Retrieves detailed Autodesk renewal opportunity information based on the requesting
partner’s relationship with the opportunity.
/v1/opportunities
8 GetPartNumber Returns the Renewal SKU for a given contract or
serial number /v1/subscriptionmate
rial 9 GetSubscription
Data Returns subscription, product, opportunity, contract, partner, early warning system, and customer information based on the inputs of an asset.
/v1/subscriptions
Table 1: APIs available for Distributors
8
4 Business Problems addressed by Place Order APIs
API USE CASES
GetMyPrice • Helps to double-check SKU price provided in the Price List before sending the order.
• Calculates the pro-rated price when applicable (add seats/products scenarios).
PlaceOrderV2 • Automatizes the order processing for New Businesses, Additions, Renewals, Maintenance to Subscription switches and contract Extensions.
GetOrderStatus • Provides real-time information about the order processing status.
• Error handling GetOrderDetails • Fetch Order Details.
• Fetch Contract #, Contract Dates, Billing Dates, Serial #, SKU, End Customer Details—Address.
• Note—Serial number can be fetched via this API, but if you want to know the license upgrade information, use GetLicense API.
• If it’s a shipment—fetch Tracking #.
GetInvoice • A Sold-To Distributor must be able to confidently receive all invoices from Autodesk for the orders they placed.
GetLicense • Before Order—Check that the serial number information matches your internal records before placing an order.
• Customer Management—Fetch Software Coordinator, Contract Manager, Reseller, VAD Info, etc.
• Support—Troubleshooting (Direct calls to GetLicense API, Sales Rep trying to figure out what customer owns).
• Historical—Ability to see what the asset was upgraded from or upgraded to and grab serial numbers.
• Forecasting—Ability to forecast renewals based on active serial numbers, quantity, and dates.
• Focused Marketing—Ability to target specific customers based on the products they own.
GetOpportunity • Prepare Renewal quotes.
• Validate Renewal SKU number and price.
• Validate if customer has done any split on assets or not.
• Forecasting.
9
API USE CASES
GetPartNumber • Provides the ability to derive the renewal SKU for all active Maintenance or Renewable subscriptions, regardless of end date as quickly as possible
• Helps Partners forecast sales as part of a sales pipeline they're managing for an entire fiscal year
• Allows Partners to look up a serial number/subscription's renewal SKU at any point outside of the 90 day renewal window
• Can be used by Partners to generate a renewal quote 90+ days in advance of a renewal opportunity being created
GetSubscriptionData • Provides subscription and customer information in bulk and in real time
• Reduces the dependency on Partner Center for renewal reports, contract coverage reports, accounts, Early Warning System information, and dashboards
• Scales to meet the demands of Partner CRM data ingestion
• Helps forecast and prioritize upcoming renewals
Table 2: Use Cases
10
5 Environment URLs
ENVIRONMENT URL
Staging https://enterprise-api-stg.autodesk.com Production https://enterprise-api.autodesk.com
Table 3: Environment URLs
6 Other URLs
ENVIRONMENT URL
DEVPortal (PROD) https://partner.developer.autodesk.com/
DEVPortal (STG) https://partner.developer-stg.autodesk.com/
Reference Documentation https://partner.developer.autodesk.com/reference- documentation-overview
API Services Manuals https://partner.developer.autodesk.com/products
Table 4: Other Useful URLs
11
7 Onboarding process – How do I get started?
1. Request a session with the PWS team to explore the different integration options based on your current processes and systems. A mixed team of Business and Technical resources will discuss the possible approaches, benefits, etc.
2. Coordinate with the Partner Integration Team at [email protected] to schedule a meeting to get an orientation on the Autodesk Partner Developer Portal and APIs.
3. Steps required from Partners
3.1. The Partner Developer Portal requires an administrator from the partner side. Identify a technical person that will manage API credentials.
3.2. View the orientation video given on the homepage of the Partner Developer Portal.
3.3. Review the API Documentation to learn how each API works.
3.4. After an account is created for your Administrator, verify the Administrator is able to log in and invite other developers to create/manage other developer accounts.
3.5. Discover and test APIs of interest in the STG Developer Portal to better understand their behavior.
4. API Implementation
4.1. Go through the Authentication Guide and API Documentation.
4.2. Review the proposed API implementation solution design with the Partner Integration Team to identify potential gaps between our design proposal and your business processes.
4.3. Start implementation APIs in the STG Environment.
5. Testing
5.1. Complete the test cases provided by the Partner Integration Team.
5.2. Wait for the test cases validation, which will be handled by the Partner Integration Team.
6. Move to Production
6.1. Schedule the Go-live session with the Partner Integration Team. Complete the following steps before the session:
6.1.1. Make sure you are able to access Partner Developer Portal in the PROD Environment.
12 6.1.2. Create the App in order to generate Production Keys to access APIs in PROD.
6.1.3. Modify your system to access PROD endpoints.
6.1.4. Execute a connectivity test by invoking GetMyPrice API. Send the test result to the Partner Integration Team.
6.1.5. DO NOT send any order in PROD Environment before the Go-live session.
6.2. During the Go-live session, execute the scenarios requested by the Partner Integration Team:
6.2.1. Using your Production environment pointing to Autodesk’s PROD Environment.
6.2.2. Use of debugging tools, console applications, etc. is not allowed
6.2.3. Share your screen while you perform the different steps to run the scenarios.
6.2.4. Test orders placed in Production during the Go-live session will be flagged as test orders, meaning that the partner will not be invoiced.
6.2.5. In most cases, scenarios will be covered with Open Products in order to avoid any impact over any Reseller
6.2.6. Partner Integration team will check in real-time that scenarios are executed properly.
6.2.7. Once the test finishes, the test orders will be returned.
6.3. Go Live, coordinating with the Partner Integration Team when the first real orders will be sent via PWS.
7.1 Staging Environment
For development and testing purposes, Autodesk provides the Partners with the Staging environment (also known as STG), which is a masked copy of our Production environment, and allows Partners to trigger the API in a non-Production environment, but with similar Data and Performance.
STG DEVPortal is the resource where Partners can:
• Find all the updated API Documentation.
• Manage the access to the API in STG.
• Test the API without any development.
• Find Sample Code examples to integration with the API using different programming languages.
To request access to DEVPortal, please send an email to [email protected] indicating:
13
• Your company name.
• Name and email of the Administrator for your company account.
Once the access has been granted, the company Administrator will be able to invite other developers to access the company account.
7.2 Implementation
It is mandatory that every partner going live with the integration to the PWS Place Order API to manage their Renewable contracts implements the following list of required functionalities:
• Initial Order.
• Add Seats.
• Add Products.
• Renew.
• Maintenance to Subscription switch.
In a similar way, the following services must be implemented in order to be granted with access to Production access:
• GetMyPrice (may be skipped in very particular cases).
• PlaceOrderV2.
• GetOrderStatus.
• GetOrderDetails.
• GetOpportunity.
7.3 Testing
All Partners onboarding to PWS API will be required to run a set of Test Scenarios and Test Cases before the Sign-off to the Production Roll-out. All the testing information will be sent in a Test Kit where you will find:
• Company information: Company name, Company CSN, Testing Status, etc. (Figure 2)
• Test Scenarios: Groups of Test Cases that will be required to be passed before the Sign-off.
(Figure 3)
• SKU List: Testing Part Numbers available, with the particular price for the Distributor. (Figure 4)
14
Figure 2: Test Kit - Summary tab
Figure 3: Test Kit - Test Sheet tab
15
Figure 4: Test Kit - SKU List tab
Partner will run the Test Cases as described in the Test Scenarios tab, using the Products listed in the SKU list tab. In a daily basis, Partner will send the updated Test Kit to the corresponding Partner Integration Consultant, who will validate that the Test Cases were processed properly.
The Test Cases sent to be validated must be set with “Waiting to be validated” status, and the following fields must be fulfilled:
• Reference #/ID: Formerly known as the TransactionID (Returned by PlaceOrderV2 service).
• Order - SKU/SKUs: Product(s) used to place the order.
• Order Contract #: Agreement number (Returned by GetOrderDetails service).
• Order - PO#: Purchase Order Number sent by the Partner.
• Serial #/#'s: Serial Number of each ordered product (Returned by GetOrderDetails service).
• Sales Order #: Sales Order Number (Returned by GetOrderDetails service).
• Invoice #: Invoice Number (Returned by GetInvoice service).
7.3.1 Test Cases using existing end-customers
To generate a new end-customer on the system, the Partner will need to send an Order indicating all the Customer details. Once the order has been accepted, GetOrderDetails service will return the CSN of the that customer, which will be able to be used for subsequent orders.
7.3.2 Test Renewal scenarios
16 To renew a contract, an Opportunity number will be needed. As the opportunities are created 90 days before the contract expiration date, and the minimum contract term is Yearly, to test renewals in STG you will need to provide a list of contracts to renew to your Partner Integration Consultant to manually create the Opportunities.
7.3.3 Test Maintenance to Subscription switches
In order to test the switch from Maintenance to Subscription, your Partner Integration Consultant will provide you with a list of different maintenance contracts and a list of switching SKUs.
17
8 Place Order API implementation Best Practices
API BEST PRACTICES
Authentication • Generate Authorization code every 3 minutes.
• Don’t generate new authorization code for each API separately.
• Callback URL does not mean the system will redirect to that URL. We are on OAuth 2.0, so callback URL is used for Authentication only.
GetMyPrice • Invoke this API right before placing the order to confirm that the calculated price between Autodesk and the Sold-to is correct.
• For the Addition transactions, inform the contract number where the seats/products will be added in order to return the pro-rated price if applicable
• For the Renewal and Maintenance to Subscription switch transactions, inform the contract number to be renewed/switched and the Opportunity that will be used.
• Invoke the API for every SKU included in the order.
PlaceOrderV2 • It is suggested to use different Partner Purchase Order and Customer Purchase Order numbers for every transaction, which will ease later identifications.
• Quantity is the number of SKU units purchased. For term-based
subscriptions and maintenance subscriptions, quantity will be equal to seats. For user pack subscriptions, quantity will indicate the amount of user packs purchased (If a customer needs 50 seats using a 25-user pack offering, the quantity is expected to be 2).
• This API is not intended to modify user details.
GetOrderStatus • When an order is placed, different business validations and system synchronization occur in Autodesk’s backend. This implies that even though Place Order returns no error, the order may not be completely created yet. Get Order Status provides the current status of the Order.
• Use the Reference ID returned PlaceOrderV2 as input parameter. The response indicates if the Order is still processing or if it has been
accepted and is completely synchronized into Autodesk’s systems. It may also return error events, as per a system failure, wrong data, etc. In this case, it is important to contact the Autodesk support team and provide the Reference ID.
• The call to this service has to be looped based on the following schema:
If you get a “processing” status in the response, wait 15 seconds and invoke the service again. If after 1-minute status and message are the same, invoke the service every minute. If after 15 minutes, there are no
18
API BEST PRACTICES
changes, invoke the service every 30min. After 2 hours without changes, open a case in Partner Center indicating clearly the TransactionID.
• When this API return an “accepted” status in the response, the next step in the flow can be executed.
GetOrderDetails • After orders have been processed, Resellers can fetch order details by passing customer PO#. Depending on how fast VADs are submitting these orders to Autodesk, Resellers can schedule the job accordingly or run a job on hourly basis (but if the order is not submitted then Resellers will see a null response). Order processing time between Autodesk and VADs is typically around 3-5 mins.
• This API is intended to fetch order details in real time and should not be used to schedule updates to your ERP systems. After an order is created, it rarely ever changes. Only auto-renew orders may change if an
additional seat or product is added, so there is no need to schedule a batch job to retrieve previous order details.
• When invoking the service passing a contract number, last order
(transaction) linked to this contract number will be returned. This means that service will not return a snapshot of the contract but only the information related to the last order (i.e. if order#1 was creating 2 new seats, and order#2 was adding 3 more seats, querying the service with contract number will return 3 seats and not 5)
• Within the response will be the serial number. Upon a successful
response use the serial number as your input to initiate a GetLicense call.
• Price-related information will be omitted in the GetOrderDetails response for Resellers.
GetInvoice • There are three billing jobs for each GEO that are triggered hourly, scheduled as follows: APAC – HH:39:04, AMER – HH:54:04 and EMEA – HH:58:23.
• The invoice will be available after the execution of the next scheduled job.
GetLicense • This API is intended to check the current status of a serial number in real time (i.e. current total number of seats).
• For renewal orders, call the API before renewal order placement to confirm Autodesk records match yours.
• Upon receiving the serial number from the GetOrderDetails response automate a call to GetLicense.
• Within the response check the asset status. If the status = ‘Registered’, that is the most current asset. In the Relationship array you will find relType: “from” and other serial numbers. If you want this historical data
19
API BEST PRACTICES
in detail you can retrieve that via new calls by grabbing the older serial numbers.
• If the status is anything else, this is not the most current asset. In the Relationship array you will find relType: “to” and other serial numbers.
You can retrieve the serial number in the “to” array to retrieve the most up to date serial number details.
• For auto-renew assets we provide the seats renewing in the next term.
GetOpportunity • You can get the opportunity list by specifying start date and end date;
you can also specify opportunity number to get details of that opportunity.
• For partners, 120 days (+90 to -30) of renewal opportunities are available. However, it cannot be retrieved in a single
request. If you are interested to pull the full 120 days of renewal opportunities, then you have to make four separate requests of 30 days each.
• Verify that the renewal SKU provided by Autodesk matches the SKU on the order.
GetPartNumber • Every time a Renewal quote has to be generated outside the 90 days before expiration window, GetPartNumber can be invoked to get the Renewal SKU and get a more accurate quote.
• Service can be invoked for a single serial number, or for a whole contract, what will return all the Renewal SKU for each asset in the contract.
GetSubscriptionData • There are two flavors of the GetSubscriptionData service: The ad-hoc and bulk versions. While the first one is intended to be used for queries resulting in small sets of data, the second one focuses on managing large amounts of information.
• Partner can decide the service invocation frequency, but as a standard, calling the service daily is the most common approach.
Table 5: Implementation Best Practices
9 Workflows for Distributors
In an effort to support the B2B most common transactions between the distributor and Autodesk the following business processes workflows have being identified and proposed as a simple way of understanding how to interact with all the Place Order APIs.
9.1 New Business Workflow
Figure 5: New Business Workflow implementation example
1. GetMyPrice (sync): This step is not mandatory, but highly recommended. Partner can use this service to check the price information at Autodesk side to discover discrepancies which can affect the end user price. The service will return the total amount for the specified SKU and quantity.
Present and Future dates can be specified. In some regions, 3 days in the past are also allowed in order to support the 3-days grace period functionality (please check with your Partner Integration Consultant).
2. PlaceOrderV2 (async): Partner triggers the PlaceOrderV2 service for the initial order providing the basic data such the Order information, products to subscribe, contact information, etc.
• There is no difference between the concepts “Quantity” and “Number of Seats” for basic products. Seats were left from the days of physical media (The number of CD-ROM’s ordered was the quantity and the number of seats referred to the number of machines that the software from a CD-ROM could be installed on). In the case of “User Packs”, for a quantity of 1 pack, a certain number of seats will be included (i.e. 1 pack may include 25 seats).
• Partner Subscription ID is a unique identifier for every item of an order. Even if a Product has been removed from the system, its Partner Subscription ID will remain associated to it and thus it will not be available to be used for new orders.
21
• Number of Seats within a Product (License) are not meant to be tied to one-single workstation. Each instance of Seat can be used on a different workstation.
• Place Order service is not intended to modify User details.
• Price field indicates the total amount considering the quantity that the partner wants to subscribe to:
𝑝𝑟𝑖𝑐𝑒 = 𝑆𝐾𝑈 𝑈𝑛𝑖𝑡 𝑃𝑟𝑖𝑐𝑒 × 𝑞𝑢𝑎𝑛𝑡𝑖𝑡𝑦
3. GetOrderStatus (sync): Once the Order has been placed, GetOrderStatus service must be called to identify whether the Order has been already created in Autodesk systems or not. The call to this service has to be looped based on the schema below:
STATUS MESSAGE MEANING ACTION
processing Order Processing. Information has been received into Autodesk system and asynchronous validations are being processed.
Wait 15 seconds and invoke the service again. If after 1- minute status and message are the same, invoke the service every minute. If after 15 minutes, there are no changes, invoke the service every 30min. After 2 hours without changes, open a case in Partner Center indicating clearly the TransactionID.
processing Order is created. Order has been created but is not
synchronized to all systems yet. Invoke the service every minute until the response changes. After 10 minutes without changes, invoke the service every 15 minutes. After 2 hours without changes, open a case in Partner Center indicating clearly the TransactionID.
processing Order is under export control review.
A business validation has blocked
the order to be reviewed. Invoke the service every 30 minutes until there is a response change. After 24 hours without changes, open a case in Partner Center indicating clearly the TransactionID.
22
STATUS MESSAGE MEANING ACTION
accepted Order is Accepted. Order has been properly processed and accepted into Autodesk
systems.
Move to the next step in the process flow.
Table 6: GetOrderStatus response Statuses
4. GetOrderDetails (sync): Once the Order has been correctly placed, Partner can invoke the GetOrderDetails service, which will return all the information related to this specific order.
• Although the service can be queried with a wide range of parameters, at this stage the best approach is to use the Purchase Order number, which is a free-text Order Reference sent by the partner.
• From the service response, the most relevant information, which should be stored at Partner’s side for future transactions, is:
o Agreement (Contract) Number.
o Sales Order Number.
o Asset(s) Serial Number(s).
5. GetInvoice (sync): There are three billing jobs for each Geo that are triggered hourly. The schedule is as follows:
GEO INVOICE GENERATION JOB SCHEDULE
APAC HH:39:04 AM/PM
AMER HH:54:04 AM/PM
EMEA HH:58:23 AM/PM
Table 7: Invoice Generation Job schedule
9.2 Addition Workflow
We understand an Addition as the transaction to add Seats or Products (Lines) to an existing Agreement. Please note that one single Addition transaction can cover the following scenarios:
• Add seats to one existing line of a contract.
• Create a new line in an existing contract.
• Add seats to different lines within the same contract.
• Add seats to an existing line and create a new line within the same contract.
• Any combination of the above (i.e. Add seats to 3 different lines and create 2 new lines).
23
Figure 6: Addition Workflow implementation example
1. GetMyPrice (sync): In an Addition scenario, the use of this API is even more relevant as it automatically calculates the pro-rated quote by passing the Agreement number where the Addition will take place. Pro-rating occurs when additional number of Seats or Products are added to an existing contract, and based on when the addition is performed, the price for the rest of the current invoicing period will change from the Price List price as explained on the table below:
TERM PRO-RATING ALGORYTHM
Annual orders 𝑝𝑟𝑜_𝑟𝑎𝑡𝑒𝑑_𝑝𝑟𝑖𝑐𝑒 =6𝑛𝑒𝑡_𝑝𝑟𝑖𝑐𝑒
12 9× 𝑟𝑜𝑢𝑛𝑑𝑈𝑝(𝑚𝑜𝑛𝑡ℎ𝑠) × 𝑄𝑢𝑎𝑛𝑡𝑖𝑡𝑦 2-years orders 𝑝𝑟𝑜_𝑟𝑎𝑡𝑒𝑑_𝑝𝑟𝑖𝑐𝑒 =6𝑛𝑒𝑡_𝑝𝑟𝑖𝑐𝑒
24 9× 𝑟𝑜𝑢𝑛𝑑𝑈𝑝(𝑚𝑜𝑛𝑡ℎ𝑠) × 𝑄𝑢𝑎𝑛𝑡𝑖𝑡𝑦 3-years orders 𝑝𝑟𝑜_𝑟𝑎𝑡𝑒𝑑_𝑝𝑟𝑖𝑐𝑒 =6𝑛𝑒𝑡_𝑝𝑟𝑖𝑐𝑒
36 9× 𝑟𝑜𝑢𝑛𝑑𝑈𝑝(𝑚𝑜𝑛𝑡ℎ𝑠) × 𝑄𝑢𝑎𝑛𝑡𝑖𝑡𝑦 where: net_price is the SKU price as indicated in the appropriate price list
months is the number of months to contract expiration date
Table 8: Pro-rating calculation
2. PlaceOrderV2 (async): Additions cover the increase of the number of seats within an existing line or the creation of a brand-new line in an existing contract. These scenarios are implemented in the API as follows:
• When adding seats to an existing line it is important to indicate the serial number (also known as subscription reference number) of the line that will receive the new seats. In this case, the quantity is the delta that will be added (i.e. if a line has 5 seats and end-customer needs 8 seats, quantity to send to the API is 3). To add seats, the same SKU that was used to create the line must be used.
24
• To create a new line into an existing contract, no subscription reference number can be indicated, as Autodesk will create a new Serial Number for this line. To add a new product, new business SKUs must be used.
3. GetOrderStatus (sync): Will work as explained in section 9.1.
4. GetOrderDetails (sync): As explained in section 9.1, the best approach is to use the Purchase Order number to query the API, always that Partner uses a different number for every transaction.
Please note that using other parameters, like the contract number, will return the last transaction performed over that contract.
5. GetInvoice (sync): Based on when the addition is performed, the following scenarios can be found (invoices are generated based on the schedule in Table 7):
TERM INVOICING
Addition is done the same date as the Renewal Date
There is a slight chance that if the addition is performed before the invoice generation, there will be only one invoice which contains all the additions. No one time invoice.
Other than that, the addition is performed after the invoice is generated. So, there will be a onetime invoice for additions, but it will not be pro-rated (it will be full price).
Addition is done one day
before the Renewal Date One-time invoice will be generated (prorated) for the additions and on the Renewal date the invoice will contain consolidate the
additions as well.
Addition is done one day
after the Renewal Date One-time invoice will be generated (prorated) for the additions and the invoice for the current Renewal term does not contain the additions. The next Renewal date invoice will include these additions.
Table 9: Invoicing in Addition scenarios
9.3 Renewal Workflow
Subscriptions can be renewed as early as 90 days prior to expiration. To avoid potentially losing access to your software, services, or benefits, it is important to renew your contract before the expiration date. If not renewed, notifications are emailed to Contract Managers 45, 30, and 4 days prior to expiration. Renewals support the following scenarios:
• It is possible to renew all the lines or only a set of them within a contract (i.e. contract contains AutoCadLT and 3DSMax; I can decide that only 3DSMax will remain active after the current period).
• If a line needs to be renewed, it is mandatory to renew the full quantity of this line, which is indicated in the Opportunity (i.e. contract contains AutoCadLT – quantity 5 and 3DSMax – quantity 7; If customer needs to renew 3DSMax, then quantity of 7 must be renewed).
25
• If customer needs to renew a set of the full quantity (i.e. contract has a quantity of 10 AutoCadLT and the customer wants to renew only 3), agreement needs to be split in two using Partner Center (i.e. contract A with 3 seats and Contract B with 7 seats). Two new opportunities will be generated (i.e. to renew 3 AutoCadLT, Contract A and Opportunity A will be used).
Figure 7: Renewal Workflow implementation example
1. GetOpportunity (sync): Although this step is optional, is highly recommended as the use of this API will provide full detail when renewing a contract. GetOpportunity service returns Renewal Opportunities details available for a given contract.
• GetOpportunity returns the Opportunity Number, which is a required field to Renew a contract. If GetOpportunity is not used, the Opportunity Number can be retrieved from the Renewal Report available in Partner Center (decreasing the level of automatic processing).
• GetOpportunity returns the Renewal SKU per each Line to be renewed. If GetOpportunity is not used, the Renewal SKU can be retrieved from the Price List.
• Renewal Opportunities are automatically created 90 days before the contract expiration date.
• Renewal Opportunities are kept in Open status until 30 days after the contract expiration date.
• GetOpportunity service indicates the Status of the Opportunity based on a Status for the whole Opportunity, and a separated Status for each Line included in the Opportunity:
EVENT OPPORTUNITY STATUS LINE ITEM STATUS
Opportunity is created. Open. Open.
26
EVENT OPPORTUNITY STATUS LINE ITEM STATUS
Opportunity is used to renew the
contract. Completed. Renewed: When the line was
selected during the renewal Expired: When the line was not selected during the renewal 30 days after the contract
expiration date, Opportunity has not been used to renew.
Expired. Closed.
Table 10: Opportunity Statuses
2. GetMyPrice (sync): In a renewal scenario, it is important to pass the agreement and opportunity numbers along with the renewal SKU in order to get the appropriate pricing.
3. PlaceOrderV2 (async): The service is used to indicate which lines from the contract will be renewed at the end of the current period.
• A Renewal Opportunity is required to perform the renewal. Opportunity must be in Open status.
Next steps in the flow are equal as the described in sections 9.1 and 9.2.
9.4 Maintenance to Subscription Switch Workflow
When a maintenance plan is up for renewal, it can be switched to a subscription via PWS, existing many options to choose from:
EXISTING MAINTENANCE PLAN NEW SUBSCRIPTION
Product Individual product. The same individual product, industry collection, or AutoCAD including specialized toolsets.
Individual LT product. The same individual product or LT Suite.
A Design & Creation Suite. An industry collection.
Term length Any term length. 1, 2 or 3 years.
Access Type Single-User. Single-User.
Multi-User. Multi-User.
What is supported:
• Customers can switch to a subscription of the same product, or to a different product, as defined by the Maintenance to Subscription Eligibility list, which is published internally and sent to partners along with their official price lists.
27
• Only perpetual seats on active renewable maintenance plans are eligible.
• Regardless of the term of the maintenance plan, the customer can switch to a subscription of an annual or multi-year term.
What is not supported:
• Early switches (before the renewal period).
• Switching of the access type (also known as Deployment) from single-user to multi-user or vice versa.
• Change of billing type from renewable to recurring when switching.
• Monthly or quarterly terms.
• Co-Terming. Switch to a new subscription agreement aligned with the end date of another existing agreement.
Figure 8: M2S Workflow implementation example
The workflow to perform a Maintenance to Subscription switch mirrors the one explained for Renewals in section 9.3, using the M2S SKUs accordingly.
9.5 Positive contract extension
This functionality allows the customers to extend their service contract to a specified end date, so that all their contracts and subscriptions are aligned to the same end date.
Goals:
28
• Provide the customer more flexibility to extend their current contract term outside of renewal.
• Simplify the renewal process for the end customer, reseller, and distributor by aligning all contracts to end in the same renewal window.
• Extend all end customer’s contracts to one end date to allow the customer to merge their contracts into one or switch all of their subscriptions to a new offering with one common renewal date.
Functionality:
• This functionality is achieved using the Renewal action in PlaceOrder v2 API.
• When specifying a new end date, a renewal opportunity must not be sent.
• Positive extension proration rules need to be applied. GetMyPrice API automatically calculates the prorated price for positive extensions.
• All active subscriptions on a contract must be extended.
• Multi-user subscriptions with extra territory rights cannot be extended.
• For positive extension renewal the contract end date needs to be after the current contract end date and fall within a specific range as defined in the Agreement validation below:
o A customer can extend a contract to a new end date up to 4 years from today's (order) date.
o A customer can extend a contract to a new end date up to 1094 days in the future from their current contract end date.
29
9.6 System feeding
Figure 9: System feeding implementation example
30
10 End to End process flow
The following diagram wants to illustrate which could be a generic process workflow involving all end-to-end Entities and phases of the Product lifecycle:
Figure 10: End-to-End example workflow