Skip to content

Implemented WebApi Requests

Florian Krönert edited this page Nov 15, 2024 · 26 revisions

This page will list all implemented WebApi requests.

The base for the to-be-implemented requests are the MSDN references for actions and functions.

At this point of time, the following requests are implemented and can be executed:

Functions

Calculates the value of a rollup attribute.

Calculates the total time, in minutes, that you used while you worked on an incident (case).

Check whether the incoming email message is relevant to the Microsoft Dynamics 365 system.

Contains the data that is needed to check whether the incoming email message should be promoted to the Microsoft Dynamics 365 system.

Downloads a report definition.

Converts the calendar rules to an array of available time blocks for the specified period.

Exports localizable fields values to a compressed file.

Converts a query in FetchXML to a QueryExpression.

Finds a parent resource group (scheduling group) for the specified resource groups (scheduling groups).

Retrieves all the time zone definitions for the specified locale and to return only the display name attribute.

Retrieves the default price level (price list) for the current user based on the user’s territory relationship with the price level.

Retrieves distinct values from the parse table for a column in the source file that contains list values.

Retrieves the source-file column headings; or retrieve the system-generated column headings if the source file does not contain column headings.

Gets the quantity decimal value of a product for the specified entity in the target.

Retrieves the history limit for a report.

Retrieves the time zone code for the specified localized time zone name.

Retrieves a list of all the entities that can participate in a Many-to-Many entity relationship.

Retrieves a list of entity logical names that are valid as the primary entity (one) from the specified entity in a one-to-many relationship.

Retrieves the set of entities that are valid as the related entity (many) to the specified entity in a one-to-many relationship.

Increments the per day view count of a knowledge article record.

Initializes a new record from an existing record.

Determines whether a solution component is customizable.

Determines whether data encryption is currently running (active or inactive).

Validates the state transition.

Searches multiple resources for available time block that matches the specified parameters.

Searches the specified resource for an available time block that matches the specified parameters.

Retrieves the absolute URL and the site collection URL for a SharePoint location record in Microsoft Dynamics 365.

TODO: RetrieveActivePath Function Description (No Joke, MS description)

Retrieves the collection of users that report to the specified system user (user).

Retrieves metadata information about all the entities.

Retrieve the data that defines the content and behavior of the application ribbon.

Example

WebApiClient.Execute(WebApiClient.Requests.RetrieveApplicationRibbonRequest)
.then(r => console.dir(r.CompressedApplicationRibbonXml))

CompressedApplicationRibbonXml is the base64 string representation of a zip file which contains the application ribbon xml 👍

Retrieves the list of database partitions that are used to store audited history data.

Retrieves the list of language packs that are installed and enabled on the server.

Retrieves all business units from the business unit hierarchy.

Retrieves all resources that are related to the specified resource group

Retrieves the resource groups (scheduling groups) that contain the specified resource.

Retrieve the collection of services that are related to the specified set of resources.

Retrieves the top-ten articles about a specified product from the knowledge base of articles for the organization

Retrieves the top-ten articles about a specified subject from the knowledge base of articles for your organization.

Retrieve information about the current organization.

Example

var request = WebApiClient.Requests.RetrieveCurrentOrganizationRequest.with({ urlParams: { AccessType: "Microsoft.Dynamics.CRM.EndpointAccessType'Internet'" } });

WebApiClient.Execute(request)
.then(function(response){
        // Process response
    })
    .catch(function(error) {
        // Handle error
    });

Retrieves the data encryption key value.

Retrieves a collection of dependency records that describe any solution components that would prevent a solution component from being deleted.

Example

var request = WebApiClient.Requests.RetrieveDependenciesForDeleteRequest
    .with({
        urlParams: {
            ObjectId: "31089fd8-596a-47be-9c9c-3ff82c7a8f8c", // in our case, this is the value of the plugintypeid
            ComponentType: 90 // 90 is 'plugintype'
        }
    });

WebApiClient.Execute(request)
.then(function(response){
        // Process response
    })
    .catch(function(error) {
        // Handle error
    });

Retrieves a list of the solution component dependencies that can prevent you from uninstalling a managed solution.

Retrieves a list dependencies for solution components that directly depend on a solution component.

Example

var request = WebApiClient.Requests.RetrieveDependentComponentsRequest
    .with({
        urlParams: {
            ObjectId: "31089fd8-596a-47be-9c9c-3ff82c7a8f8c", // in our case, this is the value of the plugintypeid
            ComponentType: 90 // 90 is 'plugintype'
        }
    });

WebApiClient.Execute(request)
.then(function(response){
        // Process response
    })
    .catch(function(error) {
        // Handle error
    });

Retrieves the type of license for a deployment of Microsoft Dynamics 365.

Retrieves a list of language packs that are installed on the server that have been disabled.

Detects and retrieves duplicates for a specified record.

Retrieve the changes for an entity.

Retrieves ribbon definitions for an entity.

Retrieves the appointments for the current user for a specific date range from the exchange web service.

Retrieves the exchange rate.

Retrieves the entity forms that are available for a specified user.

Retrieves the formatted results from an import job.

Retrieves the list of language packs that are installed on the server.

Retrieves the version of an installed language pack.

Retrieves the number of used and available licenses for a deployment of Microsoft Dynamics 365.

Retrieves localized labels for a limited set of entity attributes.

Example

var viewId = "31089fd8-596a-47be-9c9c-3ff82c7a8f8c";
var request = WebApiClient.Requests.RetrieveLocLabelsRequest
    .with({
        urlParams: {
            EntityMoniker: "{'@odata.id':'savedqueries(" + viewId + ")'}",
            AttributeName: "'name'",
            IncludeUnpublished: true
        }
    });

WebApiClient.Execute(request)
.then(function(response){
        // Process response
    })
    .catch(function(error) {
        // Handle error
    });

Retrieves folder-level tracking rules for a mailbox.

Retrieves the members of a bulk operation.

Retrieves a list of missing components in the target organization.

Retrieves any required solution components that are not included in the solution.

Retrieves the resources that are used by an organization.

Retrieves the collection of the parent resource groups of the specified resource group (scheduling group).

Retrieves the data from the parse table.

Retrieves pages of posts, including comments for each post, for all records that the calling user is following.

Retrieves the access rights of the specified security principal (team or user) to the specified record.

Example

Below code can be used when being on the form of an account record and pasting first WebApiClient and then this example into the browser console:

var request = WebApiClient.Requests.RetrievePrincipalAccessRequest.with({
    entityName: "systemuser", 
    entityId: Xrm.Page.context.getUserId().replace("{","").replace("}",""), 
    urlParams: { 
        Target:'{"@odata.id":"accounts(' + Xrm.Page.data.entity.getId().replace("{","").replace("}","") + ')"}' 
    }
});


WebApiClient.Execute(request)
.then(function(result){
    console.log(result);
});

Retrieves all the secured attribute privileges a user or team has through direct or indirect (through team membership) associations with the FieldSecurityProfile entity.

For internal use only.

Retrieves the set of privileges defined in the system.

TODO: RetrieveProcessInstances Function Description (By MS)

Retrieve all the property instances (dynamic property instances) for a product added to an opportunity, quote, order, or invoice.

Retrieves the version of a provisioned language pack.

Retrieves the list of provisioned languages.

Retrieves pages of posts, including comments for each post, for a specified record.

Retrieves a collection of solution components that are required for a solution component.

Retrieves the privileges that are assigned to the specified role.

Retrieves the collection of child resource groups from the specified resource group.

Retrieves the privileges for a team.

Retrieves a time stamp for the metadata.

Retrieves a collection of unpublished organization-owned records that satisfy the specified query criteria.

Retrieves the privileges a system user (user) has through his or her roles in the specified business unit.

Retrieves all private queues of a specified user and optionally all public queues.

Retrieves the version number of the Microsoft Dynamics 365 Server.

Retrieves all the entity records that are related to the specified record.

Searches for available time slots that fulfill the specified appointment request.

Searches for knowledge base articles that contain the specified body text.

Searches for knowledge base articles that contain the specified keywords.

Searches for knowledge base articles that contain the specified title.

Validates a rule for a recurring appointment.

Retrieves the system user ID for the currently logged on user or the user under whose context the code is running.

Example

var request = WebApiClient.Requests.WhoAmIRequest;

WebApiClient.Execute(request)
    .then(function(response){
        // Process response
    })
    .catch(function(error) {
        // Handle error
    });

Actions

Adds an item to a campaign.

Adds an item to a campaign activity.

Adds members to a list.

Adds a member to a list (marketing list).

Adds members to a team.

Adds the specified principal to the list of queue members.

Adds a set of existing privileges to an existing role.

Adds recurrence information to an existing appointment.

Adds a solution component to an unmanaged solution.

Example

var request = WebApiClient.Requests.AddSolutionComponentRequest.with({
	payload: {
		ComponentId: "[ComponentId]",
		ComponentType: 61, // Gather this from below
		SolutionUniqueName: "[SolutionUniqueName]",
		AddRequiredComponents: false
	}
});

WebApiClient.Execute(request)
.then(console.dir)
.catch(console.dir);

Component Types:

public enum componenttype
{
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	Entity = 1,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	Attribute = 2,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	Relationship = 3,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	AttributePicklistValue = 4,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	AttributeLookupValue = 5,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	ViewAttribute = 6,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	LocalizedLabel = 7,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	RelationshipExtraCondition = 8,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	OptionSet = 9,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	EntityRelationship = 10,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	EntityRelationshipRole = 11,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	EntityRelationshipRelationships = 12,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	ManagedProperty = 13,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	EntityKey = 14,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	Role = 20,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	RolePrivilege = 21,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	DisplayString = 22,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	DisplayStringMap = 23,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	Form = 24,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	Organization = 25,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	SavedQuery = 26,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	Workflow = 29,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	Report = 31,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	ReportEntity = 32,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	ReportCategory = 33,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	ReportVisibility = 34,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	Attachment = 35,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	EmailTemplate = 36,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	ContractTemplate = 37,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	KBArticleTemplate = 38,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	MailMergeTemplate = 39,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	DuplicateRule = 44,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	DuplicateRuleCondition = 45,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	EntityMap = 46,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	AttributeMap = 47,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	RibbonCommand = 48,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	RibbonContextGroup = 49,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	RibbonCustomization = 50,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	RibbonRule = 52,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	RibbonTabToCommandMap = 53,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	RibbonDiff = 55,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	SavedQueryVisualization = 59,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	SystemForm = 60,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	WebResource = 61,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	SiteMap = 62,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	ConnectionRole = 63,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	FieldSecurityProfile = 70,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	FieldPermission = 71,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	PluginType = 90,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	PluginAssembly = 91,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	SDKMessageProcessingStep = 92,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	SDKMessageProcessingStepImage = 93,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	ServiceEndpoint = 95,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	RoutingRule = 150,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	RoutingRuleItem = 151,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	SLA = 152,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	SLAItem = 153,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	ConvertRule = 154,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	ConvertRuleItem = 155,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	HierarchyRule = 65,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	MobileOfflineProfile = 161,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	MobileOfflineProfileItem = 162,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	SimilarityRule = 165,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	CustomControl = 66,
	
	[System.Runtime.Serialization.EnumMemberAttribute()]
	CustomControlDefaultConfig = 68,
}

Moves an entity record from a source queue to a destination queue.

Example

var request = WebApiClient.Requests.AddToQueueRequest
    .with({
        entityId: "56ae8258-4878-e511-80d4-00155d2a68d1",
        payload: {
            Target: {
                activityid: "59ae8258-4878-e511-80d4-00155d2a68d1",
                "@odata.type": "Microsoft.Dynamics.CRM.letter"
            }
        }
    });

WebApiClient.Execute(request)
    .then(function(response){
        // Process response
    })
    .catch(function(error) {
        // Handle error
    });

Adds a user to the auto created access team for the specified record.

Applies record creation and update rules to activities in 365 created as a result of the integration with external applications.

Applies the active routing rule to an incident.

Generates a new set of attribute mappings based on the metadata.

Schedules or "books" an appointment, recurring appointment, or service appointment (service activity).

Submits a bulk delete job that deletes selected records in bulk. This job runs asynchronously in the background without blocking other activities.

Submits an asynchronous system job that detects and logs multiple duplicate records.

Calculates the value of an opportunity that is in the "Won" state.

Calculates price in an opportunity, quote, order, and invoice.

Checks whether the specified entity can be the primary entity (one) in a one-to-many relationship.

Checkes whether an entity can be the referencing entity in a one-to-many relationship.

Cancels a contract.

Cancels a sales order.

Checks whether an entity can participate in a many-to-many relationship.

Creates a solution patch from a managed or unmanaged solution.

Creates a new copy of an unmanged solution that contains the original solution plus all of its patches.

Copies an existing contract and its line items.

For internal use only.

Copies an existing product family, product, or bundle under the same parent record.

Closes an incident (case).

Example:

const closeRequest = context.WebApiClient.Requests.CloseIncidentRequest.with({
                payload: {
                    IncidentResolution: {
                        "[email protected]": `/incidents(your-incident-id)`,
                        subject: "Title for the incident resolution",
                        timespent: 60, //minutes it took for solving
                        description: "We solved it by..."
                    },
                    Status: 5 // Set to solved
                }
            });

            return context.WebApiClient.Execute(closeRequest)
            .then(...)
            .catch(...);

Closes a quote.

Example:

var request = WebApiClient.Requests.CloseQuoteRequest
    .with({
        payload: {
            QuoteClose: {
                "[email protected]": "quotes(your-quote-id)",
                "@odata.type": "Microsoft.Dynamics.CRM.quoteclose"
            },
            Status: 3
        }
    });

WebApiClient.Execute(request)
    .then(function(response){
        // Process response
    })
    .catch(function(error) {
        // Handle error
    });

Updates a duplicate rule (duplicate detection rule) and its related duplicate rule conditions.

Converts a team of type owner to a team of type access.

Converts a product to a kit.

Converts a quote to a sales order.

Converts a sales order to an invoice.

Copies a campaign.

Creates a copy of a campaign response

Creates a static list from the specified dynamic list and add the members that satisfy the dynamic list query criteria to the static list.

Copies the members from the source list to the target list without creating duplicates.

Creates a new entity form that is based on an existing entity form.

Creates a quick campaign to distribute an activity to members of a list (marketing list).

Creates a new customer lookup attribute, and optionally, to add it to a specified unmanaged solution.

Creates an exception for the recurring appointment instance.

Creates future unexpanded instances for the recurring appointment master.

Creates translation of a knowledge article instance.

Creates a major or minor version of a knowledge article instance.

Creates a workflow (process) from a workflow template.

Replaces managed solution (A) plus all of its patches with managed solution (B) that is the clone of (A) and all of its patches.

Deletes all audit data records up until a specified end date.

Deletes instances of a recurring appointment master that have an “Open” state.

Deletes an option value in a global or local option set.

Creates an email activity record from an incoming email message.

Creates an email activity record from the specified email message

Deprovisions a language.

Creates a bulk operation that distributes a campaign activity.

Executes a workflow.

Exports a data map as an XML formatted data.

Exports a solution.

Exports all translations for a specific solution to a compressed file.

Fulfills a sales order.

Performs a full-text search on knowledge articles in Dynamics 365 using the specified search text.

Generates an invoice from an opportunity.

Generates a quote from an opportunity.

Generates a sales order (order) from an opportunity.

Returns an existing social profile record if one exists, otherwise generates a new one and returns it.

Retrieves the products from an opportunity and copy them to the invoice.

Retrieves the products from an opportunity and copy them to the quote.

Retrieves the products from an opportunity and copy them to the sales order.

Returns a tracking token that can then be passed as a parameter to the SendEmailRequest message.

Imports translations from a compressed file.

Imports the XML representation of a data map and create an import map (data map) based on this data.

Submits an asynchronous job that uploads the transformed data into Microsoft Dynamics 365.

Imports a solution.

Imports translations from a compressed file.

Inserts a new option value for a global or local option set.

Inserts a new option into a StatusAttributeMetadata attribute.

Installs the sample data.

Instantiates a set of filters for Dynamics 365 for Outlook for the specified user.

Creates an email message from a template (email template).

Locks the total price of products and services that are specified in the invoice.

Locks the total price of products and services that are specified in the sales order (order).

Sets the state of an opportunity to Lost.

Merges the information from two entity records of the same type.

Sets the order for an option set.

Submits an asynchronous job that parses all import files that are associated with the specified import (data import).

Assigns a queue item to a user and optionally remove the queue item from the queue.

Processes the email responses from a marketing campaign.

Creates a quick campaign to distribute an activity to accounts, contacts, or leads that are selected by a query.

Provisions a new language.

Publishes all changes to solution components.

Submits an asynchronous job to publish a duplicate rule.

Publishes a product family record and all its child records.

Publishes a theme and set it as the current theme.

Publishes specified solution components.

Example

var xml = "<importexportxml><entities><entity>account</entity></entities></importexportxml>";

var request = WebApiClient.Requests.PublishXmlRequest
    .with({
        payload: {
            ParameterXml: xml
        }
    });

WebApiClient.Execute(request)
    .then(function(response){
        // Process response
    })
    .catch(function(error) {
        // Handle error
    });

Qualifies a lead and create account, contact, and opportunity records that are linked to the originating lead record.

Qualifies the specified list and either override the list members or remove them according to the specified option.

Converts a QueryExpression query to its equivalent FetchXML query

Reassigns all records that are owned by the security principal (user or team) to another security principal (user or team).

Reassigns all records that are owned by a specified user to another security principal (user or team).

Recalculate system-computed values for rollup fields in the goal hierarchy.

Assigns a queue item back to the queue owner so others can pick it.

Removes a queue item from a queue.

Removes members from a team.

Removes the parent for a system user (user) record.

Removes a privilege from an existing role.

Removes a component from an unmanaged solution.

Removes a user from the auto created access team for the specified record.

Renews a contract and create the contract details for a new contract.

Renews an entitlement.

Replaces the privilege set of an existing role.

Reschedules an appointment, recurring appointment, or service appointment (service activity).

Resets the offline data filters for the calling user to the default filters for the organization.

Reverts changes done to properties of a product family, product, or bundle record, and set it back to its last published (active) state.

Sets the state of a quote to Draft.

Replaces the access rights on the target record for the specified security principal (user or team).

Routes a queue item to a queue, a user, or a team.

Sends bulk email messages.

Sends an e-mail message.

Example

// Execute from console when on a draft email form
var request = WebApiClient.Requests.SendEmailRequest
    .with({
        entityId: frames[0].Xrm.Page.data.entity.getId(),
        payload: {
            IssueSend: true
        }
    });

WebApiClient.Execute(request)
.then(function(response){
        // Process response
    })
    .catch(function(error) {
        // Handle error
    });

Sends an e-mail message to a recipient using an e-mail template.

Sends a fax.

Sends a bulk email message that is created from a template.

Assigns equipment (facility/equipment) to a specific business unit.

Moves a system user (user) to a different business unit.

Sets or restore the data encryption key.

TODO: SetFeatureStatus Action Description (Obviously no description yet)

Sets localized labels for a limited set of entity attributes.

Example

var viewId = "31089fd8-596a-47be-9c9c-3ff82c7a8f8c";
var request = WebApiClient.Requests.SetLocLabelsRequest
    .with({
        payload: {
            Labels: [],
            EntityMoniker: {
                "@odata.type": "Microsoft.Dynamics.CRM.savedquery",
                savedqueryid: viewId
            },
            AttributeName: "name"
        }
    });

WebApiClient.Execute(request)
.then(function(response){
        // Process response
    })
    .catch(function(error) {
        // Handle error
    });

Sets a new parent system user (user) for the specified user.

Sets the process that associates with a given target entity. The user can set to another business process or specify null to clear out the current process.

Links an instance of a report entity to related entities.

Submits an asynchronous job that transforms the parsed data.

Validates the configuration of a Microsoft Azure Service Bus solution’s service endpoint.

Uninstalls the sample data.

Unlocks pricing for an invoice.

Unlocks pricing for a sales order (order).

Submits an asynchronous job to unpublish a duplicate rule.

TODO: UpdateFeatureConfig Action Description (Missing)

Updates an option value in a global or local option set.

Updates values of the property instances (dynamic property instances) for a product added to an opportunity, quote, order, or invoice.

Updates a component in an unmanaged solution.

Updates an option set value in for a StateAttributeMetadata attribute.

Verifies that an appointment or service appointment (service activity) has valid available resources for the activity, duration, and site, as appropriate.

Validates a saved query.

Sets the state of an opportunity to Won.

Sets the state of a quote to Won.

Clone this wiki locally