---
schema_version: "1"
id: 59386e4838dca5a6d5ffee84c8d2322cec78553dfe229f127d02b4517650a450
title: sObjects That Don’t Support DML Operations
collection: legacydeveloper
version: current
locale: en-us
portal_url: https://docs.salesforce.com/legacydeveloper/current/en-us/apexcode/apex_dml_non_dml_objects.md
canonical_url: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_dml_non_dml_objects.htm
source_site: developer.salesforce.com
content_type: documentation
content_hash: 848dc33434acd8338a18ef433c870a6d0330c8040629289bd0b89240284367e0
---
# sObjects That Don’t Support DML Operations

Your organization contains standard objects provided by Salesforce and custom objects that you created. These objects can be accessed in Apex as instances of the sObject data type. You can query these objects and perform DML operations on them. However, some standard objects don’t support DML operations although you can still obtain them in queries. The following is a non-exhaustive list of such objects:

- AccountTerritoryAssignmentRule
- AccountTerritoryAssignmentRuleItem
- ApexComponent
- ApexPage
- BusinessHours
- BusinessProcess
- CategoryNode
- CurrencyType
- DatedConversionRate
- NetworkMember (allows update only)
- ProcessInstance
- Profile
- RecordType
- SelfServiceUser
- StaticResource
- Territory2
- UserAccountTeamMember
- UserPreference
- UserTerritory
- WebLink

The following are special cases of DML operations on objects.

- If an Account record has a record type of Person Account, the Name field can’t be modified with DML operations.
- All standard and custom objects can also be accessed through the SOAP API. ProcessInstance is an exception. You can’t create, update, or delete ProcessInstance in the SOAP API.
- DML operations aren't supported on Data 360 data model objects (DMOs). For details on using Apex with Data 360 objects, see [Data Cloud in Apex](https://developer.salesforce.com/docs/atlas.en-us.264.0.apexcode.meta/apexcode/DataCloudInApex.htm).
- To determine if DML is supported on your specific object, use the Schema.describeSObjects()method as shown in this sample code.
    
    // This example describes the ApexPage object. Replace it with your
    // objects(s) in the results list to check if DML is permitted.
    List<Schema.DescribeSobjectResult> results = Schema.describeSObjects(new List<string>    {'ApexPage'}, SObjectDescribeOptions.DEFERRED);
    DescribeSObjectResult d = results\[0\];
    System.debug('isCreateable():' + d.isCreateable());
    System.debug('isUpdateable():' + d.isUpdateable());
    System.debug('isQueryable(): ' + d.isQueryable());