Why does a programatically created custom attribute appear in the Database but nowhere else?

I created a custom attribute with the following code:
if (!teamNameExists(wiToUpdate)) {
IProjectArea projectArea = fetchProjectArea(wiToUpdate);
String identifier = Messages.getString("Attribute.Identifier"); //$NON-NLS-1$
String displayName = Messages.getString("Attribute.Display.Name"); //$NON-NLS-1$
String attributeType = Messages.getString("Attribute.Type"); //$NON-NLS-1$
IAttribute teamAttribute = getWorkItemCommon().createAttribute(
projectArea, identifier, attributeType, displayName,
monitor);
wiToUpdate.addCustomAttribute(teamAttribute);
IWorkItem workingWI = (IWorkItem) wiToUpdate.getWorkingCopy();
IStatus saveWorkItemStatus = getWorkItemServer().saveWorkItem2(
workingWI, null, null);
logger.info("Status of Attribute Save is: "
+ saveWorkItemStatus.toString());
}
When I opened the project that the work item was associated with and selected the Process tab. I checked the Project Configuration > Configuration Data > Types and Attributes and selected the correct Type. The custom attribute I had created and saved did not exist. However, when I attempted to manually enter the attribute, I got an error saying the attribute ID already existed.
When I try to retrieve the custom attribute programatically, created with the code above, the workItem method getCustomAttributes() returns null.
One answer

I've found that the project area must know about the attribute before it can "cleanly" be in the work item context. I use this little ditty:
protected IAttribute getAttribute(IProjectAreaHandle area,
String attributeId, boolean createIt)
throws TeamRepositoryException {
IWorkItemClient service = getWorkItemClient();
IAttribute attribute = service.findAttribute(area, attributeId, null);
if (null == attribute && createIt) {
attribute = service.createAttribute(area, attributeId,
AttributeTypes.MEDIUM_STRING, attributeId, null);
}
return attribute;
}
which seems to do the trick. The above method is followed by a workItem.addCustomAttribute( returned attribute from above)
protected IAttribute getAttribute(IProjectAreaHandle area,
String attributeId, boolean createIt)
throws TeamRepositoryException {
IWorkItemClient service = getWorkItemClient();
IAttribute attribute = service.findAttribute(area, attributeId, null);
if (null == attribute && createIt) {
attribute = service.createAttribute(area, attributeId,
AttributeTypes.MEDIUM_STRING, attributeId, null);
}
return attribute;
}
which seems to do the trick. The above method is followed by a workItem.addCustomAttribute( returned attribute from above)