# US 12,117,969 B2 · Data conversion and synchronization

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,117,969 B2
- Document ID: US12117969B2
- Status: Granted
- Kind: B2
- Application number: 17/464,385
- Filed: 2021-09-01
- Published: 2023-03-16
- Granted: 2024-10-15
- Earliest claimed: 2021-09-01
- Assignees: OneLogin, Inc.
- Applicants: OneLogin, Inc.
- Inventors: Dominick Salvatore Caponi
- Web page: https://patentgrep.com/patent/US12117969B2

## CPC

- G06F 16/1794: {Details of file format conversion}
- G06F 16/219: {Managing data history or versioning (querying versioned data G06F16/2474; querying temporal data G06F16/2477)}
- G06F 16/2379: {Updates performed during online database operations; commit processing}
- G06F 21/31: User authentication
- G06F 21/6218: {to a system of files or objects, e.g. local or distributed file system or database}
- H04L 63/0823: {using certificates (cryptographic mechanisms or cryptographic arrangements for entity authentication involving certificates H04L9/3263)}
- H04L 63/102: {Entity profiles}
- H04L 63/20: {for managing network security; network security policies in general (filtering policies H04L63/0227)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A two staged, two output data conversion system synchronizes resources between IAM systems (including CIAM systems). For the first stage of the conversion process, data is obtained for each resource and stored in an interim file. For the second stage of the conversion process, the data is converted twice to create two output files: one output for a source IAM system and one output file for a destination IAM system.

## Claims

### Claim 1

A method for synchronizing resources between identity and access management (IAM) systems, comprising:
electronically obtaining a list of resources for a tenant from a source IAM system;
generating a temporary data structure including creating a record for at least a subset of the resources in the obtained list, populating each record with a header identifying a respective resource and leaving the data portion of each record empty of data for the respective resource;
for each record in the temporary data structure, electronically requesting data for the resource from the source IAM system;
receiving the requested data from the source IAM system for the records in the temporary data structure;
adding the received requested data to an interim data file the records of the interim data file are in a first syntax and are in a format for the source IAM system;
converting the data of the records of the interim data file from the first syntax and the format for the source IAM system to a second syntax and the format for the source IAM system;
storing the converted data of the records of the interim data file in a source output file in the second syntax and in the format for the source IAM system;
converting the data of the records of the interim data file from the first syntax and the format for the source IAM system to the second syntax and a format for a destination IAM system;
storing the converted data of the records of the interim data file in a destination output file in the second syntax and in the format for the destination IAM system; and
automatically provisioning the resources for the tenant on the destination IAM system based on records stored in the destination output file in the second syntax and in the format for the destination IAM system.

### Claim 2 (depends on 1)

The method of claim 1, wherein:
the electronically obtaining the list of resources comprises issuing a plurality of HTTP GET commands.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
parsing the obtained list of resources prior to the generating the temporary data structure.

### Claim 4 (depends on 1)

The method of claim 1, wherein:
the interim file is a tfstate file.

### Claim 5 (depends on 1)

The method of claim 1, wherein:
the first syntax is JavaScript Object Notification (JSON);
the second syntax is HashiCorp Configuration Language; and
the resources include any one or more applications, users, groups, roles, policies, authorized servers, virtual servers, and privileges.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
using the destination IAM system to perform identity management services based on the provisioning.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
updating a service provider to use the destination IAM system rather than source IAM system; and
using the destination IAM system to perform authorization for access to the service provider based on the provisioning and the updating.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
checking the source output file and the destination output file into a version control system;
making a change to the source output file and the destination output file to implement a change in a particular resource of the resources for the tenant;
updating the destination IAM system based on the change;
updating the source IAM system based on the change; and
tracking the change in the particular resource and other changes using the version control system.

### Claim 9 (depends on 1)

The method of claim 1, further comprising:
editing content of the source output file to remove data content for the resources and create new output file; and
provisioning resources in the source IAM system based on the new output file, causing removal all data for the resources for the tenant in source IAM system.

### Claim 10 (depends on 9)

The method of claim 9, further comprising:
subsequent to the provisioning resources in the source IAM system based on the new output file, determining a need to restore the resources for the tenant in source IAM system; and
in response to the determining a need to restore the resources for the tenant in source IAM system, restoring the resources for the tenant in source IAM system by provisioning resources in the source IAM system based on the source output file.

### Claim 11 (depends on 1)

The method of claim 1, wherein:
a generic resource manager performs the electronically requesting data for the resource from the source IAM system for each record in the temporary data structure;
the source output file and the destination output file are readable and usable by the generic resource manager; and
the automatically provisioning the resources for the tenant on the destination IAM system comprises requesting the generic resource manager to automatically create the resources for the tenant on the destination IAM system based on the destination output file.

### Claim 12 (depends on 11)

The method of claim 11, further comprising:
editing content of the source output file to remove data content for the resources and create new output file;
causing the generic resource manager to provision resources in the source IAM system based on the new output file, causing removal all data for the resources for the tenant in source IAM system;
subsequent to the provisioning resources in the source IAM system based on the new output file, determining a need to restore the resources for the tenant in source IAM system; and
in response to the determining a need to restore the resources for the tenant in source IAM system, causing the generic resource manager to restore the resources for the tenant in source IAM system by provisioning resources in the source IAM system based on the source output file.

### Claim 13

A method for synchronizing resources between systems, comprising:
electronically requesting data for a plurality of resources from a source cloud-based system;
receiving the requested data from the source cloud-based system, the received data is in a first syntax and in a format for the source cloud-based system;
converting the received data from the first syntax and the format for the source cloud-based system to a second syntax and the format for the source cloud-based system;
creating a source output file and storing the converted data in the source output file in the second syntax and in the format for the source cloud-based system;
converting the received data from the first syntax and the format for the source cloud-based system to the second syntax and a format for a destination cloud-based system;
creating a destination output file and storing the converted data in the destination output file in the second syntax and in the format for the destination cloud-based system; and
automatically provisioning the plurality of resources on the destination cloud-based system based on the destination output file in the second syntax and in the format for the destination cloud-based system.

### Claim 14 (depends on 13)

The method of claim 13, further comprising:
updating a service provider to use the destination cloud-based system rather than the source cloud-based system; and
using the destination cloud-based system to perform authorization for accesses to the service provider based on the provisioning and the updating.

### Claim 15 (depends on 13)

The method of claim 13, further comprising:
checking the source output file and the destination output file into a version control system;
making a change to the source output file and the destination output file to implement a change in a particular resource of the resources for the tenant;
updating resources on the destination cloud-based system based on the change;
updating resources on the source cloud-based system based on the change; and
tracking the change and other changes using the version control system.

### Claim 16 (depends on 13)

The method of claim 13, further comprising:
editing content of the source output file to remove data content for the resources and create new output file; and
provisioning resources in the source cloud-based system based on the new output file,
causing removal of all data for the resources for the tenant in source IAM system.

### Claim 17 (depends on 16)

The method of claim 16, further comprising:
subsequent to the provisioning resources in the source cloud-based system based on the new output file, restoring the resources in the source cloud-based system by provisioning resources in the source cloud-based system based on the source output file.

### Claim 18

A non-transitory processor readable storage medium storing processor readable code that programs one or more processors to implement a method for synchronizing resources between systems, the method comprising:
obtaining data for a plurality of resources from a source identity and access management (IAM) system;
generating an interim file for the obtained data including creating a record for each resource of the plurality of resources, the records of the interim file are in a first syntax and are in a format for the source IAM system;
converting the data of the records of the interim file from the first syntax and the format for the source IAM system to a second syntax and the format for the source IAM system;
creating a source output file and storing the converted data of the records of the interim file in the source output file in the second syntax and in the format for the source IAM system;
converting the data of the records of the interim file from the first syntax and the format for the source IAM system to the second syntax and a format for a destination IAM system;
creating a destination output file and storing the converted data of the records of the interim file in the destination output file in the second syntax and in the format for the destination IAM system; and
automatically provisioning the plurality of resources on the destination IAM system based on the destination output file.

### Claim 19 (depends on 18)

The non-transitory processor readable storage medium of claim 18, wherein the method further comprises:
editing content of the source output file to remove data content for the resources and create new output file; and
provisioning resources in the source IAM system based on the new output file, causing removal all data for the resources for the tenant in source IAM system.

### Claim 20 (depends on 19)

The non-transitory processor readable storage medium of claim 19, wherein the method further comprises:
subsequent to the provisioning resources in the source IAM system based on the new output file, restoring the resources for the tenant in source IAM system by provisioning resources in the source IAM system based on the source output file.
