Abstract:
A method for allocating serial numbers among packaging sites includes receiving, from a packaging site, a query directed to a first server for the identity of a second server, providing the packaging site with information, from the first server, the information leading to the second server, receiving, from the packaging site, a query directed to the second server for the identity of a third server, providing the packaging site information, from the second server, the information leading to the third server. The method also includes receiving, from the packaging site, a query directed to the third server; and providing the packaging site at least one serial number from the third server.

Description:
BACKGROUND 
   An electronic product code (EPC) is a naming scheme used to uniquely identify individual items or products. The EPC provides additional information not provided in a typical universal product code (UPC). The UPC provides a unique identifier for each make or model of a product while the EPC provides a unique identifier for each individual item of a product. 
   As shown in  FIGS. 1A and 1B , one example of an EPC includes 96 bits of identification data, including a serial number  8  to identify individual items. The identification numbers or EPC bits may be represented by bar code symbols to enable the electronic (optical) reading at the point of sale, upon receiving at warehouses or in any other stage, where the capture of data is necessary for the business processes. In addition to the serial number  8 , the EPC bits includes a version  2 , manufacturer identifier  4 , and product identifier  6 . In the example shown in  FIG. 1B , the version  2  is 8 bits. The manufacturer ID  4  is 28 bits and provides greater than 268 million possible combinations for unique manufacturers. The product ID  6  is 24 bits and provides greater than 16 million possible combinations for unique products for each manufacturer. The serial number  8  is 36 bits and provides greater than 68 billion possible unique items per product. 
   SUMMARY 
   According to an aspect of the invention a method for allocating serial numbers among a plurality of packaging sites includes receiving, from a packaging site, a query directed to a first server for the identity of a second server. The second server is assigned to manage serial numbers for a particular manufacturer. The method also includes providing the packaging site with information, from the first server, the information leading to the second server, and receiving, from the packaging site, a query directed to the second server for the identity of a third server. The third server is assigned to manage serial numbers for a particular product. The method also includes providing the packaging site information, from the second server, the information leading to the third server, receiving, from the packaging site, a query directed to the third server; and providing the packaging site at least one serial number from the third server. 
   Embodiments of the invention may include one or more of the following features. The first server can be a registry server. The second server can be a manufacturer reference server. The third server can be an item reference server. 
   Receiving at least one serial number can include receiving a single serial number or receiving a block of serial numbers. The method can also include assigning the serial number to an individual product at the packaging site. 
   Receiving, from the packaging site, a query can include receiving a query that includes a manufacturer prefix. Receiving, from the packaging site, a query directed to the second server can include receiving an item reference from the packaging site. 
   The information leading to at least one of the second or third server can include a URL. Two or more of the first, second, and third servers can reside on the same physical computer. The first server, the second server, and the third server can be configured to operate independently of each other. 
   The method can also include providing the packaging site with information needed to generate at least one of an Electronic Product Code (EPC) or a Serialized Global Trade Identification Number (SGTIN). 
   A query can be based on a Web Services communication protocol or on a SOAP communication protocol. The third server can assign serial numbers based on predefined rules. 
   In some examples, providing the packaging site at least one serial number can include providing the packaging site with a block of serial numbers. 
   A centralized serial number allocation system allows serial numbers to be allocated across multiple geographic locations and organizational entities. The allocation system can provide reliability and consistency in the allocation. In addition, since the serial number allocation system is central to multiple packaging sites, the allocation system can track the serial number assignments and provide historical data. 
   In some examples, the serial number allocation system also preserves the data integrity of the serial numbers. Secure connections can protect the serial numbers from unauthorized use. 
   The serial number allocation system includes multiple servers (e.g. a registry server, a manufacturer reference server, and an item reference server) each of which maintains a particular subset of information. Each server provides a reference to another server until the server distributing serial numbers for a particular item is finally located by the packaging site. This architecture provides the advantage of being scaleable, both in the number of manufacturers and items as well as the number of packaging sites. 
   Other features and advantages of the invention will become apparent from the following description, and from the claims. 

   
     DESCRIPTION OF DRAWINGS 
       FIG. 1A  is a block diagram of an electronic product code. 
       FIG. 1B  is an example of an electronic product code. 
       FIG. 2  shows a serial number allocation system in communication with multiple packaging sites. 
       FIG. 3  shows data flow between a packaging site and a serial number allocation system. 
       FIG. 4  is a block diagram of components of the serial number allocation system shown in  FIG. 3 . 
       FIG. 5  is a flow chart showing the allocation of individual serial numbers. 
       FIG. 6  is a flow chart showing the allocation of blocks of serial numbers. 
       FIG. 7  is a flow chart showing a multi-server process for the assignment of serial numbers. 
   

   DESCRIPTION 
   Referring to  FIG. 2 , a system for allocating serial numbers includes multiple packaging sites  12   a–g.  Each packaging site can assign serial numbers to one or more different products and multiple packaging sites can package the same product. In order to uniquely identify each item packaged in each of the packaging sites, serial numbers are assigned to the items. The serial numbers are allocated such that a single serial number is unique and no two items share the same EPC code. 
   For example, sites  12   a  and  12   e  could each produce multiple types of soup for a particular manufacturer. In order to uniquely identify each individual can of soup, an EPC code (as shown in  FIGS. 1A and 1B ) is placed on each can of soup. Since two packaging plants are producing cans of soup for the same manufacturer, the manufacturer identification on the cans of soup will be the same. Since each packaging plant produces multiple types of soup, the packaging plant must use a different product identifier in the EPC code for each type of soup. Although, the manufacturer ID and product ID will be the same for each type of soup between the two sites, each can of soup is assigned a unique serial number (e.g., the serial number is unique for the product and universally unique when combined with the manufacturer identification and product identification). The serial number allocation system  14  uniquely assigns the serial numbers across the multiple sites. 
   Multiple packaging sites  12   a–g  can reference a serial number allocation system  14 . The serial number allocation system  14  allocates serial numbers to the individual packaging sites and ensures that serial numbers are unique for each item even if the items were packaged at different sites. 
   Referring to  FIG. 3 , an overview of the communication between a packaging site  12   a  and the serial number allocation system  14  is shown. The packaging site  12   a  sends the manufacturer prefix  16  and the product identifier  18  to the serial number allocation system  14 . Based on the manufacturer prefix  16  and the product identifier  18  the serial number allocation system  14  determines the next available serial number for the particular product and returns a unique serial number  20  for the item to the packaging site  12 . 
   Referring to  FIG. 4 , the serial number allocation system  14  includes multiple servers or systems in communication with a packaging site  12 . The packaging site  12  references the systems in the serial number allocation system  14  to determine a serial number (or set of serial numbers) to assign to a particular item (or items). The serial number allocation system  14  includes a registry server  30 , multiple manufacturer reference servers  40   a–c,  and multiple item reference servers  36   a–c.  The packaging site  12  communicates with the servers  30 ,  36 , and  40  using a network  38  such as the internet or an intranet. Secure communication protocols can be used to ensure the integrity of the data. For example, the packaging site  12  can query the servers using a “web services” or “SOAP” protocol. 
   The registry server  30  includes a registry of manufacturers. The registry includes URL addresses or other identifying information, such as the IP address of a manufacturer reference server  40 , for each manufacturer in the registry. Based on the received manufacturer identifier prefix  16 , the registry server  30  provides the packaging site  12  with a reference for a particular one of the manufacturer servers  40 . A single manufacturer can be associated with multiple manufacturer reference numbers and/or multiple manufacturer servers  40 . 
   The manufacturer servers  40  each include a registry or database of products for a particular manufacturer. The packaging site  12  provides the product identifier to the manufacturer reference server  40  associated with the product. Based on the product identifier, the manufacturer reference server  40  provides a URL or other identifier for an item reference server  36  associated with the particular item or product. 
   The item reference servers  36  each include a set of serial numbers for a particular item. The packaging site  12  queries the item reference server  36  based on the identifier received from the manufacturer reference server  40 . When the packaging site  12  queries the item reference server  36 , the item reference server  36  determines an available serial number and returns that serial number to the packaging site  12 . 
     FIG. 5  shows the determination and allocation of a unique serial number for a single item using the serial number allocation system  14 . The packaging site  12  queries the registry server  30  to determine the location of a manufacturer reference server  40  (step  52 ). Based on the determined location, the packaging site  12  queries the manufacturer reference server  40  to determine the location of an item reference server  36  (step  54 ). Based on the determined item reference server  36 , the packaging site  12  queries the item reference server  36  to determine a serial number (step  56 ) and the packaging site  12  receives from the item reference server  36  a unique serial number for an item (step  58 ). 
   While the allocation process described above results in the assignments of a single unique serial number to an item, the serial number allocation system  14  can alternately assign a block of serial numbers to a packaging site  12 . When the serial number allocation system  14  provides a block of serial numbers to the packaging site  12 , the packaging site  12  assigns the unique serial numbers to each item until each unique serial number in the block of serial numbers has been assigned. At this point, if additional numbers are needed, the packaging site  12  can query the serial number allocation system  14  to receive another block of serial numbers. This can be advantageous when a line is generating a large volume of the same type of product for the same manufacturer because this process reduces the amount of communication between the serial number allocation system  14  and the packaging site  12 . 
     FIG. 6  shows the determination and assignment of a unique serial number for an item, including a system that assigns serial numbers from a block of serial numbers using the serial number allocation system  14 . The packaging site  12  queries the registry server  30  to determine the location of a manufacturer reference server  40  (step  72 ). Based on the determined location, the packaging site  12  queries the manufacturer reference server  40  to determine the location of an item reference server  36  (step  74 ). Based on the determined item reference server  36 , the packaging site  12  queries the item reference server  36  to determine a set of serial numbers (step  76 ) and receives from the item reference server  36  a set of serial numbers for the product (step  78 ). The packaging site  12  allocates individual serial numbers from the set of serial numbers to individual items (step  80 ). The packaging site  12  determines if there are additional items needing a serial number (step  82 ). If there are no additional items, then the serial number allocation ends. If there are additional items, the packaging site  12  determines if there are serial numbers from the block of serial numbers not yet assigned (step  86 ). If there are additional serial numbers available, the packaging site  12  returns to allocating the serial numbers (step  80 ). If there are no serial numbers available, the packaging site  12  queries the reference server to receive another block of serial numbers. 
   While the processes described above includes three layers of servers that are queried to assign serial numbers (e.g., two to provide information such as a URL leading to a server that assigns serial numbers for a particular product, and one that assigns the serial numbers), a different number of servers or systems could be used. 
   For example, the packaging site  12  could maintain a link to the manufacturer reference server for a particular manufacturer. In this two-layer example, the manufacturer reference server could be queried directly to obtain information leading to the item reference server (i.e., a two server system). 
   In another example, a registry server or manufacturer reference server might include a subset of information leading to the next server (e.g., a manufacturer server could include information leading to half of the item reference servers for a manufacturer). In this example, another step, perhaps implemented using an additional server, could be included to provide the information. 
   Referring to  FIG. 7 , a process  100  for determining a serial number for a particular item is shown. This process is scaleable to any number of servers as long as each server provides information leading to another server in such a way that the server that allocates the serial number can be located by a packaging site  12 . Process  100  includes determining a domain from a registry server (step  102 ) and obtaining a URL of a first server from the registry (step  104 ). Process  100  queries the server based on the obtained URL for a serial number (step  106 ) and determines if the server assigns serial numbers (step  108 ). If the server assigns serial numbers, process  100  determines if a serial number was received (step  110 ). If a serial number was received, the process ends (step  114 ). If a serial number was not received, the process displays an error message (step  116 ). If the server does not assign serial numbers, process  100  determines if a URL was received (step  112 ). If a URL was received, process  100  uses the URL to query a different server and returns to step  106 . If a URL is not received, process  100  displays an error message (step  118 ). 
   While the examples above refer to different servers performing different portions of the serial number allocation process, other configurations could be used. For example, all processing could occur on ASICS or general processors. In addition, the processes performed by different servers could be carried out on a single server or system. 
   Other embodiments are within the scope of the following claims: