CRM module in a business suite
CRM
Core objects
In full
The application runs on Microsoft Dataverse and ships separate Opportunity, Account, Contact and activity tables, with activities (task, phone call, appointment, email and others) linked to a parent record through the Regarding field so they roll up under the opportunity, account or contact. The opportunity carries a Customer lookup that targets either an account or a contact and is business required, so an opportunity must name a customer but that customer can be a person rather than an organization; a separate Primary Contact lookup holds the individual on an account-based deal.
Source: https://learn.microsoft.com/en-us/dynamics365/sales/developer/opportunity-entities, https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunity, https://learn.microsoft.com/en-us/dynamics365/sales/manage-activities
Verification: Verified
Pipeline stages
In full
Opportunities are driven by a business process flow that presents ordered stages as chevrons across the top of the record; the shipped sales process runs Qualify, Develop, Propose and Close. The stage set is administrator-defined, with up to 30 stages in a process and up to 30 steps in a stage, and a process can be sent back to a previous stage.
Source: https://learn.microsoft.com/en-us/dynamics365/sales/create-edit-opportunity-sales, https://learn.microsoft.com/en-us/power-automate/create-business-process-flow
Verification: Verified
Status
In full
The opportunity table ships a statecode column, labeled Status, whose options are Open, Won and Lost. It sits on the opportunity itself and is independent of the business process flow stage and of the separate salesstagecode picklist, so whether the opportunity is still live is an attribute of the record.
Source: https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunity
Verification: Verified
Resolution
In part
The same statecode column carries Won and Lost as distinct values, and a statuscode column, labeled Status Reason, adds In Progress, On Hold, Won, Lost and Out of scope. The outcome is therefore held on the opportunity, not inferred from the stage it stopped in.
Source: https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunity
Verification: Verified
Value
In full
Estimatedvalue ships as a money column for potential revenue.
Source: https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunity, https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunityproduct
Verification: Verified
Scope of work
In full
The Opportunity Product table ships as line items associated with an opportunity.
Source: https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunity, https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunityproduct
Verification: Verified
Expected close date
In full
Estimatedclosedate ships, described as the expected closing date for forecasting.
Source: https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunity, https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunityproduct
Verification: Verified
Actual close date
In full
The opportunity table ships actualclosedate, described as showing when the opportunity was closed or canceled, alongside the separate estimatedclosedate used for forecasting. Closing the opportunity automatically creates an Opportunity Close activity record holding the close date and actual revenue. The close dialog presents the close date for the user to verify and adjust, so the stamped value can be overridden.
Source: https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunity
Verification: Verified
Opportunity owner
In full
Ownerid ships as a system-required owner column targeting a user or team.
Source: https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunity, https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunityproduct
Verification: Verified
Linked buyer
In full
Customerid targets an account or a contact, and parentcontactid ships as a contact lookup.
Source: https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunity, https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunityproduct
Verification: Verified
Record preservation
In full
Microsoft states that closing an opportunity deactivates it but does not delete it, so it can be reopened later. Closed records are reachable through the Closed Opportunities view, the associated Opportunity Close activity can be reviewed afterwards, and the forecast category on the opportunity is set to Won or Lost so closed work continues to feed forecasting.
Source: https://learn.microsoft.com/en-us/dynamics365/sales/close-opportunity-won-lost-sales
Verification: Verified
Structured lost reasons
In full
The Opportunity Close table carries a Status Reason choice column (`opportunitystatuscode`) whose shipped options include Canceled and Out-Sold for a loss alongside Won, plus a Competitor lookup and a free-text description of why the deal was won or lost. Administrators can add their own status reason values against the won and lost statuses and add custom columns to the close form, so the reason is a structured, reportable field rather than a note.
Source: https://learn.microsoft.com/en-us/dynamics365/developer/reference/entities/opportunityclose, https://learn.microsoft.com/en-us/dynamics365/sales/customize-opportunity-close-experience
Verification: Verified
Email sync
In full
Server-side synchronisation connects user mailboxes to the application and, with Exchange or Exchange Online, synchronizes email in both directions without any Outlook add-in, so a seller can send from an opportunity or contact record and mail sent or received in Outlook is tracked back onto the record timeline. Incoming mail is polled on a five-minute cycle and outgoing mail queued as Pending Send is picked up on the same cycle. Gmail and Yahoo mailboxes are supported for email over POP3/SMTP or IMAP/SMTP.
Source: https://learn.microsoft.com/en-us/power-platform/admin/server-side-synchronization, https://learn.microsoft.com/en-us/dynamics365/sales/configure-email, https://learn.microsoft.com/en-us/power-platform/admin/supported-email-service-configurations-server-side-synchronization
Verification: Verified
Calendar sync
In full
Server-side synchronisation keeps appointments, contacts and tasks in sync in both directions with Exchange and Exchange Online, so the appointment activity object itself - not a date field - is mirrored to and from the user's Outlook calendar. The constraint is provider coverage: the supported configurations table records appointment, contact and task synchronisation as unsupported for Gmail and Yahoo mailboxes, which are limited to email, so an organization on Google Workspace has no documented native calendar sync.
Source: https://learn.microsoft.com/en-us/power-platform/admin/server-side-synchronization, https://learn.microsoft.com/en-us/power-platform/admin/supported-email-service-configurations-server-side-synchronization
Verification: Verified
Schedulable activity types
In full
Activities are created from inside a record - Related, then Activities, then New Activity - and shipped types cover appointment, recurring appointment, phone call, task, email, letter and fax, each with subject, start and stop times, due date and duration. Types are user-definable: a maker can create a new table with the Activity type and tick Display in Activity menus, which puts the custom type in the activity menus alongside the shipped ones, so internal operational work such as preparing a quote can be modelled as its own type.
Source: https://learn.microsoft.com/en-us/dynamics365/sales/manage-activities, https://learn.microsoft.com/en-us/power-apps/maker/data-platform/types-of-entities
Verification: Verified
Opportunity reporting
In part
Two of the three are available, and the one that is missing is missing because the data is not kept. Forecasting is shipped and purpose-built, rolling opportunity revenue into periods by a chosen date column - Est. Close Date on the opportunity in the shipped configuration - against a user or territory hierarchy and a quota, updating in near real time. An overall win rate is reachable but assembled: the shipped Deals Won vs. Deals Lost chart and the forecast grid's Won and Lost columns give counts rather than a proportion, so the buyer builds the rate, either as a 100% stacked column chart of opportunity count by status over a closed-opportunity view, where the won segment is read as a percentage of the category total, or as an average rollup column over a simple formula column that scores each opportunity 100 when won and 0 when lost, filtered to closed. Conversion between pipeline stages is not available at all. A business process flow instance stores the current active stage plus a comma-delimited text string of visited stage IDs, which no native aggregate can decompose, and there is no shipped stage-history table; the shipped funnel plots estimated revenue by pipeline phase, which is a distribution. The Power BI template apps that carried process analytics were withdrawn in May 2025 and would not count in any case.
Source: https://learn.microsoft.com/en-us/dynamics365/sales/project-accurate-revenue-sales-forecasting, https://learn.microsoft.com/en-us/power-apps/maker/model-driven-apps/create-edit-system-chart, https://learn.microsoft.com/en-us/power-apps/maker/data-platform/define-rollup-fields, https://learn.microsoft.com/en-us/power-apps/maker/data-platform/formula-columns, https://learn.microsoft.com/en-us/power-automate/developer/business-process-flows-code, https://learn.microsoft.com/en-us/dynamics365/sales/sales-pipeline-chart
Verification: Verified