DeleteRetentionSourceAuthority API¶
Deletes a retention source authority from the system. The authority must not be in use by any retention and disposition schedules.
Endpoint¶
Methods¶
- GET
/srv.asmx/DeleteRetentionSourceAuthority?authenticationTicket=...&authorityName=... - POST
/srv.asmx/DeleteRetentionSourceAuthority(form data) - SOAP Action:
http://tempuri.org/DeleteRetentionSourceAuthority
Parameters¶
| Parameter | Type | Required | Description |
|---|---|---|---|
authenticationTicket |
string | Yes | Authentication ticket obtained from AuthenticateUser |
authorityName |
string | Yes | Exact name of the retention source authority to delete |
Response¶
Success Response¶
Error Response¶
Required Permissions¶
- User must be authenticated (anonymous users cannot perform this action)
- User must have administrative rights to manage retention settings
- Typically requires Records Management or System Administrator role
Deletion Restrictions¶
The API will prevent deletion if:
- Authority is in use: Referenced by one or more R&D schedules
- Authority not found: No authority with the specified name exists
- Empty name: Authority name is empty or whitespace-only
Example¶
Request (GET)¶
GET /srv.asmx/DeleteRetentionSourceAuthority?authenticationTicket=abc123-def456&authorityName=GDPR%20-%20General%20Data%20Protection%20Regulation HTTP/1.1
Host: server.example.com
Request (POST)¶
POST /srv.asmx/DeleteRetentionSourceAuthority HTTP/1.1
Content-Type: application/x-www-form-urlencoded
authenticationTicket=abc123-def456&authorityName=GDPR - General Data Protection Regulation
Request (SOAP 1.1)¶
POST /srv.asmx HTTP/1.1
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://tempuri.org/DeleteRetentionSourceAuthority"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<DeleteRetentionSourceAuthority xmlns="http://tempuri.org/">
<authenticationTicket>abc123-def456</authenticationTicket>
<authorityName>GDPR - General Data Protection Regulation</authorityName>
</DeleteRetentionSourceAuthority>
</soap:Body>
</soap:Envelope>
Success Response¶
Error Response Examples¶
Authority Not Found:
Authority In Use:
<root success="false" error="Cannot delete authority because it is referenced by one or more R&D schedules" />
Empty Name:
Invalid Ticket:
Related APIs¶
Retention Source Authority Management¶
GetRetentionSourceAuthorities- List all retention source authoritiesCreateRetentionSourceAuthority- Create a new retention source authorityUpdateRetentionSourceAuthority- Update an existing authority (if available)
Retention & Disposition Schedule Management¶
GetRandDSchedules- Get all R&D schedules (to verify authority usage)GetRandDScheduleInfo- Get detailed schedule informationUpdateRandDSchedule- Update schedule to remove authority referenceDeleteRandDSchedule- Delete R&D schedule before deleting authority
Use Cases¶
- Cleanup Obsolete Authorities
- Remove authorities that are no longer applicable
-
Consolidate duplicate or redundant authorities
-
System Maintenance
- Remove test authorities created during setup
-
Clean up authorities added in error
-
Compliance Updates
- Remove authorities for superseded regulations
-
Update authority list when regulations change
-
Organization Restructuring
- Remove authorities specific to divested business units
- Clean up after mergers or acquisitions
Pre-Deletion Checklist¶
Before deleting a retention source authority:
- Check Usage
- Call
GetRandDSchedulesto get all R&D schedules -
Verify no schedules reference the authority to be deleted
-
Update or Delete Dependent Schedules
- Use
UpdateRandDScheduleto change authority reference -
Or use
DeleteRandDScheduleto remove unused schedules -
Document Reason
- Maintain audit trail of why authority was removed
-
Document replacement authority if applicable
-
Communicate Changes
- Notify compliance team of authority removal
- Update retention policy documentation
Error Codes¶
Common error responses:
| Error | Description |
|---|---|
[901]Session expired or Invalid ticket |
Invalid authentication ticket |
[2730]Insufficient rights. Anonymous users cannot perform this action |
User is not authenticated |
Authority name cannot be empty |
No authority name provided or only whitespace |
Retention source authority not found |
No authority with the specified name exists |
Cannot delete authority because it is referenced by one or more R&D schedules |
Authority is in use |
Access denied |
User does not have permission to delete authorities |
Notes¶
- Authority names are case-sensitive when matching for deletion
- Whitespace is trimmed from the beginning and end of authority names
- The deletion is permanent and cannot be undone
- Authority deletion is logged in the system audit trail
- Consider exporting authority list before making bulk deletions
- Deleting an authority does not affect historical records that referenced it
Workflow for Safe Deletion¶
-
Verify Authority Exists
-
Check for Dependencies
-
Remove Dependencies (if any)
-
Delete Authority
-
Verify Deletion
Best Practices¶
- Verify Before Delete: Always check if authority is in use before attempting deletion
- Backup First: Export authority list before making changes
- Update Dependencies: Remove or update R&D schedules referencing the authority
- Document Changes: Maintain audit trail of deletions
- Test in Staging: Test deletion in non-production environment first
- Communicate: Notify stakeholders before removing authorities
- Gradual Approach: Delete authorities one at a time, not in bulk
- Verify Impact: Check historical reports that may reference deleted authorities
Security Considerations¶
- Authority deletion requires administrative privileges
- All deletion attempts are logged in the audit trail
- Authority names are sanitized to prevent injection attacks
- Consider implementing approval workflows for authority deletion
- Implement backup and recovery procedures
Integration Example¶
JavaScript/Client-Side¶
async function deleteAuthority(authorityName) {
// First, check if authority is in use
const inUse = await isAuthorityInUse(authorityName);
if (inUse) {
alert('Cannot delete authority: it is currently in use by R&D schedules');
return false;
}
// Confirm deletion
if (!confirm(`Are you sure you want to delete authority: ${authorityName}?`)) {
return false;
}
const ticket = getUserAuthTicket();
const formData = new FormData();
formData.append('authenticationTicket', ticket);
formData.append('authorityName', authorityName);
const response = await fetch('/srv.asmx/DeleteRetentionSourceAuthority', {
method: 'POST',
body: formData
});
const xmlText = await response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlText, "text/xml");
const success = xmlDoc.querySelector("root").getAttribute("success");
if (success === "true") {
console.log("Authority deleted successfully");
return true;
} else {
const error = xmlDoc.querySelector("root").getAttribute("error");
console.error("Failed to delete authority:", error);
alert(error);
return false;
}
}
async function isAuthorityInUse(authorityName) {
// Check if any R&D schedules reference this authority
const ticket = getUserAuthTicket();
const response = await fetch(
`/srv.asmx/GetRandDSchedules?authenticationTicket=${ticket}`
);
const xmlText = await response.text();
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(xmlText, "text/xml");
// Parse schedules and check for authority reference
// (Actual implementation would need to check schedule details)
return false; // Simplified for example
}
C# Client Usage¶
using (var client = new SrvSoapClient())
{
try
{
// First check if authority exists
var authoritiesResponse = await client.GetRetentionSourceAuthoritiesAsync(authTicket);
var authorities = authoritiesResponse.Descendants("Authority")
.Select(a => a.Attribute("Name")?.Value)
.ToList();
if (!authorities.Contains(authorityToDelete))
{
Console.WriteLine("Authority not found");
return;
}
// Check if in use (simplified - would need to check R&D schedules)
var schedulesResponse = await client.GetRandDSchedulesAsync(authTicket);
// ... check if any schedules reference the authority ...
// Confirm deletion
Console.WriteLine($"Are you sure you want to delete '{authorityToDelete}'? (y/n)");
var confirm = Console.ReadLine();
if (confirm?.ToLower() != "y")
{
Console.WriteLine("Deletion cancelled");
return;
}
// Perform deletion
var response = await client.DeleteRetentionSourceAuthorityAsync(
authTicket,
authorityToDelete
);
var root = response.Root;
if (root.Attribute("success")?.Value == "true")
{
Console.WriteLine("Authority deleted successfully");
}
else
{
var error = root.Attribute("error")?.Value;
Console.WriteLine($"Error: {error}");
}
}
catch (Exception ex)
{
Console.WriteLine($"Exception: {ex.Message}");
}
}
Common Scenarios¶
Scenario 1: Clean Up Test Authorities¶
1. Get list of all authorities
2. Identify test authorities (e.g., names starting with "TEST_")
3. For each test authority:
- Verify it's not in use
- Delete the authority
4. Verify cleanup complete
Scenario 2: Consolidate Duplicate Authorities¶
1. Identify duplicate authorities (e.g., "SEC" and "SEC - Securities and Exchange Commission")
2. Choose the authority name to keep
3. Update all R&D schedules to use the kept authority
4. Delete the duplicate authorities
5. Verify all schedules still function correctly
Scenario 3: Remove Superseded Regulation¶
1. Identify the superseded authority (e.g., old regulation)
2. Create new authority for replacement regulation
3. Update all R&D schedules to reference new authority
4. Delete the old authority
5. Document the change in compliance records
Version History¶
- Compatible with infoRouter 8.7 and later
- Supports both synchronous SOAP and REST access patterns
- Authority management features may require Records Management license
- Deletion validation enhanced in version 8.7.152
See Also¶
- GetRetentionSourceAuthorities - List all authorities
- CreateRetentionSourceAuthority - Create new authority
- GetRandDSchedules - Get R&D schedules to check dependencies
- Control Panel UI:
RetentionSourceAuthority.aspx?method=delete- Authority deletion form