AgentSkillsCN

Configuration Items

当您需要管理Autotask配置项(CI)时,可使用此技能:进行资产管理、库存追踪、保修监控、生命周期管理,以及关系映射。本技能涵盖CI类型、分类、DNS记录、SSL证书、相关物品、备注信息,以及与合同计费的关联,是MSP资产文档化与基础设施追踪的必备工具。

SKILL.md
--- frontmatter
description: >
  Use this skill when working with Autotask Configuration Items (CIs) - asset
  management, inventory tracking, warranty monitoring, lifecycle management,
  and relationship mapping. Covers CI types, categories, DNS records, SSL
  certificates, related items, notes, and contract billing associations.
  Essential for MSP asset documentation and infrastructure tracking.
triggers:
  - autotask configuration item
  - autotask asset
  - autotask ci
  - configuration item
  - asset management
  - device inventory
  - warranty tracking
  - asset lifecycle
  - network device
  - server inventory
  - workstation tracking
  - ssl certificate tracking
  - dns management

Autotask Configuration Items Management

Overview

Configuration Items (CIs) are the backbone of MSP asset management in Autotask. CIs represent any trackable asset—servers, workstations, network devices, software licenses, domains, and more. Proper CI management enables warranty tracking, lifecycle planning, ticket context, and contract-based billing.

CI Status Codes

Status IDNameDescriptionBusiness Logic
1ActiveCurrently in useStandard operational state
2InactiveNot currently in useMay be spare/storage
3RetiredEnd of lifeHistorical record only
4MissingCannot be locatedRequires investigation
5On OrderProcurement in progressExpected arrival tracking

CI Lifecycle Workflow

code
On Order (5) ────> Active (1) ────> Inactive (2) ────> Retired (3)
                      │                    ↑
                      └────────────────────┘
                      (temporary deactivation)

      Active (1) ────> Missing (4) ────> (investigation)
                            │
                            ├──> Active (1)    (found)
                            └──> Retired (3)   (write-off)

Configuration Item Field Reference

Core Identification Fields

FieldTypeRequiredDescription
idintSystemAuto-generated unique identifier
referenceTitlestring(100)YesPrimary name/identifier
referenceNumberstring(50)NoSerial number or reference
companyIDintYesOwner company
companyLocationIDintNoLocation within company
configurationItemTypeintYesType classification
configurationItemCategoryIDintNoCategory classification

Hardware Specification Fields

FieldTypeRequiredDescription
productIDintNoLink to Autotask product
serialNumberstring(100)NoManufacturer serial number
makestring(50)NoManufacturer
modelstring(100)NoModel name/number

Network Fields

FieldTypeRequiredDescription
ipAddressstring(50)NoPrimary IP address
macAddressstring(50)NoMAC address
hostnamestring(100)NoNetwork hostname

Lifecycle Fields

FieldTypeRequiredDescription
isActivebooleanSystemActive status flag
installDatedateNoWhen installed/deployed
purchaseDatedateNoWhen purchased
warrantyExpirationDatedateNoWarranty end date
endOfLifeDatedateNoEOL date from manufacturer
retirementDatedateNoWhen retired from service
lastPhysicalLocationDatedateNoLast physical audit

Contract & Billing Fields

FieldTypeRequiredDescription
contractIDintNoAssociated contract
contractServiceIDintNoService on contract
contractServiceBundleIDintNoService bundle
monthlyUnitCostdecimalNoMonthly recurring cost
setupFeedecimalNoOne-time setup fee
hourlyRatedecimalNoHourly rate for T&M work

RMM Integration Fields

FieldTypeRequiredDescription
rmmDeviceIDintNoRMM platform device ID
rmmDeviceUIDstringNoRMM unique identifier
rmmDeviceAuditIDintNoRMM audit record ID
rmmDeviceAuditLastUserstringNoLast logged-in user from RMM
rmmDeviceAuditOperatingSystemstringNoOS from RMM audit
rmmDeviceAuditDeviceNetworkAddressstringNoIP from RMM

User-Defined Fields

CIs support custom user-defined fields (UDFs) for organization-specific tracking:

  • Asset tags
  • Cost centers
  • Business criticality
  • Compliance tags
  • Custom lifecycle flags

CI Types

Configuration Item Types classify assets at the highest level:

Type IDCommon NameExamples
1ServerPhysical servers, VMs, cloud instances
2WorkstationDesktops, laptops
3Network DeviceRouters, switches, firewalls, APs
4PrinterNetwork printers, MFPs
5Mobile DevicePhones, tablets
6SoftwareLicenses, subscriptions
7DomainDomain names
8SSL CertificateSSL/TLS certificates
9Cloud ServiceSaaS subscriptions
10OtherMiscellaneous assets

Note: Actual type IDs vary by Autotask instance. Query /v1.0/ConfigurationItemTypes to get your instance's specific values.

Querying Types

http
POST /v1.0/ConfigurationItemTypes/query
Content-Type: application/json
json
{
  "filter": [
    {"field": "isActive", "op": "eq", "value": true}
  ]
}

CI Categories

Categories provide secondary classification within types:

Category ExamplesParent TypeDescription
Physical ServerServerOn-premises physical
Virtual ServerServerVMware, Hyper-V
Cloud ServerServerAWS, Azure, GCP
Windows WorkstationWorkstationWindows PCs
Mac WorkstationWorkstationApple devices
FirewallNetwork DeviceSecurity appliances
Managed SwitchNetwork DeviceL2/L3 switches
Wireless APNetwork DeviceAccess points

Category Hierarchy

code
Type: Server
├── Category: Physical Server
│   ├── Rack Mount
│   └── Tower
├── Category: Virtual Server
│   ├── VMware
│   └── Hyper-V
└── Category: Cloud Server
    ├── AWS EC2
    ├── Azure VM
    └── GCP Compute

Type: Network Device
├── Category: Firewall
│   ├── Hardware Firewall
│   └── Virtual Firewall
├── Category: Switch
│   ├── Core Switch
│   └── Access Switch
└── Category: Wireless
    ├── Access Point
    └── Controller

Related Items (CI Relationships)

Related Items establish connections between Configuration Items:

Relationship Types

RelationshipDescriptionExample
Parent/ChildHierarchicalVM → Host server
DependencyDepends onApplication → Database server
PeerEqual relationshipClustered servers
BackupBackup targetPrimary → Backup NAS
NetworkNetwork connectionServer → Switch port

Creating Relationships

http
POST /v1.0/ConfigurationItemRelatedItems
Content-Type: application/json
json
{
  "configurationItemID": 12345,
  "relatedConfigurationItemID": 67890,
  "relationshipDescription": "Hosted virtual machines",
  "relationshipTypeID": 1
}

Querying Relationships

json
{
  "filter": [
    {"field": "configurationItemID", "op": "eq", "value": 12345}
  ]
}

DNS Records

Track DNS records associated with CIs:

DNS Record Fields

FieldTypeDescription
configurationItemIDintParent CI
recordTypestringA, AAAA, CNAME, MX, TXT, etc.
hostnamestringRecord hostname
valuestringRecord value
ttlintTime to live
priorityintPriority (for MX)

Creating DNS Records

http
POST /v1.0/ConfigurationItemDnsRecords
Content-Type: application/json
json
{
  "configurationItemID": 12345,
  "recordType": "A",
  "hostname": "mail.acmecorp.com",
  "value": "192.168.1.100",
  "ttl": 3600
}

Common DNS Tracking Patterns

javascript
// Track all DNS records for a domain CI
const dnsRecords = await queryDnsRecords({
  filter: [
    {field: 'configurationItemID', op: 'eq', value: domainCiId}
  ]
});

// Find CIs with expiring SSL certs
const expiringSSL = await queryCIs({
  filter: [
    {field: 'configurationItemType', op: 'eq', value: SSL_CERT_TYPE},
    {field: 'warrantyExpirationDate', op: 'lte', value: thirtyDaysFromNow}
  ]
});

CI Notes

Attach notes to Configuration Items for documentation:

Creating CI Notes

http
POST /v1.0/ConfigurationItemNotes
Content-Type: application/json
json
{
  "configurationItemID": 12345,
  "title": "Firmware Update Log",
  "description": "Updated to firmware v2.1.4 on 2024-02-15. Resolved memory leak issue.",
  "noteType": 1
}

Note Types

TypeDescriptionVisibility
1InternalMSP only
2ExternalClient visible

Billing Product Associations

Link CIs to billing products for recurring revenue:

Association Fields

FieldTypeDescription
configurationItemIDintThe CI
productIDintBilling product
quantitydecimalQuantity units
unitPricedecimalPrice per unit
effectiveDatedateBilling start date

Creating Billing Association

json
{
  "configurationItemID": 12345,
  "productID": 999,
  "quantity": 1,
  "unitPrice": 49.99,
  "effectiveDate": "2024-02-01"
}

API Patterns

Creating a Configuration Item

http
POST /v1.0/ConfigurationItems
Content-Type: application/json

Server Example:

json
{
  "companyID": 12345,
  "referenceTitle": "ACME-DC-SQL01",
  "referenceNumber": "SN-ABC123456",
  "configurationItemType": 1,
  "configurationItemCategoryID": 3,
  "make": "Dell",
  "model": "PowerEdge R750",
  "serialNumber": "ABC123456789",
  "ipAddress": "192.168.1.50",
  "hostname": "SQL01.acmecorp.local",
  "installDate": "2024-01-15",
  "purchaseDate": "2024-01-01",
  "warrantyExpirationDate": "2027-01-01",
  "isActive": true
}

Workstation Example:

json
{
  "companyID": 12345,
  "referenceTitle": "ACME-WS-JSmith",
  "configurationItemType": 2,
  "make": "Dell",
  "model": "Latitude 5540",
  "serialNumber": "XYZ789012345",
  "rmmDeviceAuditLastUser": "jsmith@acmecorp.com",
  "purchaseDate": "2024-02-01",
  "warrantyExpirationDate": "2027-02-01",
  "isActive": true
}

Query Patterns

All active CIs for a company:

json
{
  "filter": [
    {"field": "companyID", "op": "eq", "value": 12345},
    {"field": "isActive", "op": "eq", "value": true}
  ],
  "includeFields": ["Company.companyName"]
}

CIs with expiring warranties (next 90 days):

json
{
  "filter": [
    {"field": "warrantyExpirationDate", "op": "isNotNull"},
    {"field": "warrantyExpirationDate", "op": "lte", "value": "2024-05-15"},
    {"field": "warrantyExpirationDate", "op": "gte", "value": "2024-02-15"},
    {"field": "isActive", "op": "eq", "value": true}
  ]
}

Servers by type and location:

json
{
  "filter": [
    {"field": "configurationItemType", "op": "eq", "value": 1},
    {"field": "companyLocationID", "op": "eq", "value": 99}
  ]
}

CIs without RMM integration:

json
{
  "filter": [
    {"field": "rmmDeviceID", "op": "isNull"},
    {"field": "isActive", "op": "eq", "value": true},
    {"field": "configurationItemType", "op": "in", "value": [1, 2]}
  ]
}

Updating a Configuration Item

http
PATCH /v1.0/ConfigurationItems
Content-Type: application/json

Retire an asset:

json
{
  "id": 12345,
  "isActive": false,
  "retirementDate": "2024-02-15"
}

Update warranty information:

json
{
  "id": 12345,
  "warrantyExpirationDate": "2028-01-01"
}

Common Workflows

Asset Onboarding

  1. Create CI with basic info
  2. Set type and category for classification
  3. Link to company location
  4. Record warranty dates
  5. Create relationships (if part of infrastructure)
  6. Associate billing (if recurring)
  7. Sync with RMM for ongoing monitoring

Warranty Tracking Report

javascript
async function getExpiringWarranties(daysAhead = 90) {
  const futureDate = new Date();
  futureDate.setDate(futureDate.getDate() + daysAhead);

  const cis = await queryCIs({
    filter: [
      {field: 'warrantyExpirationDate', op: 'isNotNull'},
      {field: 'warrantyExpirationDate', op: 'lte', value: futureDate.toISOString().split('T')[0]},
      {field: 'isActive', op: 'eq', value: true}
    ],
    includeFields: ['Company.companyName']
  });

  return cis.map(ci => ({
    name: ci.referenceTitle,
    company: ci.companyName,
    expires: ci.warrantyExpirationDate,
    daysRemaining: Math.ceil(
      (new Date(ci.warrantyExpirationDate) - new Date()) / (1000 * 60 * 60 * 24)
    )
  })).sort((a, b) => a.daysRemaining - b.daysRemaining);
}

Lifecycle Planning

javascript
function calculateAssetAge(ci) {
  if (!ci.purchaseDate) return null;

  const purchase = new Date(ci.purchaseDate);
  const now = new Date();
  const ageYears = (now - purchase) / (1000 * 60 * 60 * 24 * 365);

  // Standard lifecycle recommendations
  const lifecycles = {
    server: 5,
    workstation: 4,
    networkDevice: 7,
    printer: 5
  };

  const expectedLife = lifecycles[ci.typeCategory] || 5;
  const remainingLife = expectedLife - ageYears;

  return {
    ageYears: Math.round(ageYears * 10) / 10,
    expectedLife,
    remainingLife: Math.round(remainingLife * 10) / 10,
    status: remainingLife <= 0 ? 'REPLACE' :
            remainingLife <= 1 ? 'PLAN_REPLACEMENT' :
            'HEALTHY'
  };
}

RMM Sync Verification

javascript
async function findUnmatchedAssets(companyId) {
  const cis = await queryCIs({
    filter: [
      {field: 'companyID', op: 'eq', value: companyId},
      {field: 'isActive', op: 'eq', value: true},
      {field: 'configurationItemType', op: 'in', value: [1, 2]} // Servers, workstations
    ]
  });

  return {
    withRMM: cis.filter(ci => ci.rmmDeviceID),
    withoutRMM: cis.filter(ci => !ci.rmmDeviceID),
    coverage: `${Math.round((cis.filter(ci => ci.rmmDeviceID).length / cis.length) * 100)}%`
  };
}

Error Handling

Common API Errors

CodeMessageResolution
400CompanyID requiredAll CIs must have a company
400Invalid configuration typeQuery ConfigurationItemTypes first
400Duplicate reference numberReference numbers must be unique
404Configuration item not foundVerify CI ID exists
409Cannot delete active CIRetire or inactivate first

Validation Errors

ErrorCauseFix
ReferenceTitle requiredMissing nameAdd referenceTitle
Invalid IP formatBad IP addressUse valid IPv4/IPv6
Invalid date formatWrong date formatUse YYYY-MM-DD
Category not valid for typeMismatched categoryCheck type/category relationship

Best Practices

  1. Standardize naming - Use consistent referenceTitle format (e.g., COMPANY-TYPE-NAME)
  2. Track serial numbers - Enable warranty lookups and asset verification
  3. Set warranty dates - Proactive renewal planning
  4. Link to RMM - Enable automated inventory sync
  5. Document relationships - Map infrastructure dependencies
  6. Regular audits - Verify CI accuracy quarterly
  7. Use categories - Enable meaningful reporting
  8. Track purchase dates - Lifecycle planning
  9. Associate contracts - Enable billing automation
  10. Maintain DNS records - Track hosted services

Related Skills