 
	ForEachLine
ForEachLine is a loop. It is generally the starting point of a batch script. The commands inside the ForEachLine element are executed for each line of the CSV file (lines 4+).
Set of script commands allowing you to automate the creation, modification and deletion of portfolios, as well as creation or deletion of user accounts.
 
Using one or more portfolio models, a batch script and a CSV file, Karuta creates the user accounts and their portfolios. The CSV file contains the data for each user account to be created. The batch script contains each step to execute: create the user account, create one or more portfolios from the portfolio models, share the new portfolios with the user accounts in specified roles, update user data in the portfolios, etc.
 
This script corresponds to the following alogorith:
For each line of the CSV file:
 
The CSV file contains the information needed to execute the batch script.
CSV file format:
Line 1 Names of the global variables. Global variables are the variables that have 
		the same value for each user to be created (for example, the codes of the model portfolios to be 
		instanciated, a program code or a semester). In the batch script, references to global variables 
		must be prefixed by //.
		model_code is a reserved word: it is the code of the portfolio that contains the batch
		script to be executed.
	Line 2 Values of the global variables. In the exemple above, the value of 
		model_code is createStudents: it is the code of the portfolio that 
		contains the batch script.
	Line 3 Names of the local variables. Local variables are the variables that have 
		different values for each user to be created (for example, the student's name, email, etc).
	Lines 4+ Values of the local variables, usually one user per line.
	Execution command:
User account commands:
Portfolio commands:
Portfolio group commands:
User group commands:
Commands to add an element to a portfolio:
Commands to update the value of a portfolio element:
Metadata update commands:
 
	ForEachLine is a loop. It is generally the starting point of a batch script. The commands inside the ForEachLine element are executed for each line of the CSV file (lines 4+).
 
	Create a user account. Don't forget to replace the default local variable names by your own (line 3 of your CSV file).
Fields to populate:
Identifier Unique identifier for the user. Will be used as login to Karuta.
			(For example student ID number or email.)
		First Name User's first name.Last Name User's last name.Email User's email.Password Password for the user in Karuta.Creator? Does the user account being created need Karuta Designer rights? 
			(Usually, no!)
		 
	Delete a user account. (Important note: deleting a user does NOT delete their portfolios!)
Fields to populate:
Identifier Unique identifier of the user account to delete (the login).
			Add a select element to draw the identifier from a global or local variable in 
			your CSV file, or a value element to specify the identifier directly.
		 
	Add a user to a user group.
Fields to populate:
Person User identifier (the login). Add a select element to draw the 
			identifier from a global or local variable in your CSV file, or a value element 
			to specify the identifier directly.
		UserGroup User group name (example: teachers2017). Add a select element 
			to draw the name from a global or local variable in your CSV file, or a value element 
			to specify the name directly.
		 
	Remove a user from a user group.
Fields to populate:
Person User identifier (the login). Add a select element to draw the 
			identifier from a global or local variable in your CSV file, or a value element 
			to specify the identifier directly.
		UserGroup Name of the user group (example: teachers2017). Add a select element 
			to draw the name from a global or local variable in your CSV file, or a value element 
			to specify the name directly.
		 
	Create a portfolio instance from a portfolio model.
Fields to populate:
ID Assign an ID which will be used in subsequent commands to reference 
			this portfolio (for example to share the new portfolio with a user).
		Model Code of the portfolio model to instanciate. Format: 
			project code.portfolio model code. Add select elements for global or local 
			variables in your CSV file, and/or value elements to specify values directly.
		Code Code of the portfolio to be created. Format: 
			project code.portfolio code. Add select elements for global or local 
			variables in your CSV file, and/or value elements to specify values directly.
		Label Label of the portfolio to be created. Add select elements 
			for global or local variables in your CSV file, and/or value elements to specify 
			values directly.
		 
	Share a portfolio with a user account in a specified role.
Fields to populate:
Tree Select Select the ID of the portfolio to be shared. The ID has previously
			been assigned either in a CreateTree command or in a SelectTree command. 
		Person User identifier (the login). Add a select element to draw the 
			identifier from a global or local variable in your CSV file, or a value element 
			to specify the identifier directly.
		Role User's role in the portfolio (example: student). Add a select element 
			to draw the role from a global or local variable in your CSV file, or a value element 
			to specify the role directly.
		 
	Select a portfolio to be able to reference it in subsequent commands.
Fields to populate:
ID Assign an ID which will be used in subsequent commands to reference 
			this portfolio.
		Code Code of the portfolio to select. Format: 
			project code.portfolio code. Add select elements for global or local 
			variables in your CSV file, and/or value elements to specify values directly.
		 
	Delete a portfolio.
Fields to populate:
Code Code of the portfolio to delete. Format: 
			project code.portfolio code. Add select elements for global or local 
			variables in your CSV file, and/or value elements to specify values directly.
		 
	Add a portfolio to a portfolio group.
Fields to populate:
Tree Select Select the ID of the portfolio to be shared. The ID has 
			previously been assigned either in a CreateTree command or in a SelectTree command. 
		PortfolioGroup Name of the portfolio group (example: geography2017). 
			Add a select element to draw the name from a global or local variable in  
			your CSV file, or a value element to specify the name directly.
		 
	Share a portfolio with a user group in a specified role.
Fields to populate:
Tree Select Select the ID of the portfolio to be shared. The ID has 
			previously been assigned either in a CreateTree command or in a SelectTree command. 
		UserGroup Name of the user group (example: teachers2017). Add a select 
			element to draw the name from a global or local variable in your CSV file, or a value 
			element to specify the name directly.
		Role Role of the users in the portfolio. Add a select element to draw 
			the role from a global or local variable in your CSV file, or a value element to 
			specify the role directly.
		 
	Unshare a portfolio from a user group in a specified role.
Fields to populate:
Tree Select Select the ID of the portfolio to be shared. The ID has 
			previously been assigned either in a CreateTree command or in a SelectTree command. 
		UserGroup Name of the user group (example: teachers2017). Add a select 
			element to draw the name from a global or local variable in your CSV file, or a value 
			element to specify the name directly.
		Role Role of the users in the portfolio. Add a select element to draw 
			the role from a global or local variable in your CSV file, or a value element to 
			specify the role directly.
		 
	Import an element in a portfolio.
Fields to populate:
Destination Select Structural element where to import the node (parent 
			of the new node). Format: ID.semantic tag. The ID has previously been assigned 
			either in a CreateTree command or in a SelectTree command, and the semantic tag is 
			that of the structural element where to import the node.
		Source select Element to import into the portfolio. Format: 
			portfolio code.semantic tag.
		 
	Move an element up by one position in the XML tree.
Fields to populate:
Select Node to move. Format: ID.semantic tag. The ID has previously 
			been assigned either in a CreateTree command or in a SelectTree command, and the semantic 
			tag is that of the element to move.
		 
	Update a Short Text resource in a portfolio instance.
Fields to populate:
Select Resource to update. Format: ID.semantic tag. The ID has 
			previously been assigned either in a CreateTree command or in a SelectTree command, 
			and the semantic tag is that of the resource element to be updated in the portfolio.
		Field Value Value to update to. Add a select element to draw 
			the value from a global or local variable in your CSV file (example: studentName), 
			or a value element to specify the value directly.
		 
	Update the target of a Proxy element.
Fields to populate:
Proxy Select Proxy resource to update. Format: ID.semantic tag. The 
			ID has previously been assigned either in a CreateTree command or in a SelectTree command, 
			and the semantic tag is that of the Proxy element to update.
		Source Select Target node the Proxy element should point to. Format: 
			portfolio code.semantic tag. Add select elements for global or local variables 
			in your CSV file, and/or value elements to specify values directly.
		 
	Update the code of the portfolio that contains the report script in a Dashboard element.
Fields to populate:
Select Dashboard resource to update. Format: ID.semantic tag. The ID has 
			previously been assigned either in a CreateTree command or in a SelectTree command, 
			and the semantic tag is that of the Dashboard resource element to be updated in the portfolio.
		Dashboard Code The code of the portfolio that contains the report script. Add 
			select elements for global or local variables in your CSV file, and/or value 
			elements to specify values directly.
		 
	Update a portfolio's code and label.
Fields to populate:
Old Code Add select elements for global or local variables in your 
			CSV file, and/or value elements to specify values directly.
		New Code Add select elements for global or local variables in your 
			CSV file, and/or value elements to specify values directly.
		Label Add select elements for global or local variables in your 
			CSV file, and/or value elements to specify values directly.
		 
	Update any resource in a portfolio instance.
Fields to populate:
Select The resource to be updated. Format: ID.semantic tag. The 
			ID has previously been assigned either in a CreateTree command or in a SelectTree 
			command, and the semantic tag is that of the element to update.
		Code Add select elements for global or local variables in your 
			CSV file, and/or value elements to specify values directly.
		Label Add select elements for global or local variables in your 
			CSV file, and/or value elements to specify values directly.
		 
	Update the Query metadata of an element.
Fields to populate:
Select The element to be updated. Format: ID.semantic tag. The 
			ID has previously been assigned either in a CreateTree command or in a SelectTree 
			command, and the semantic tag is that of the element to update.
		Query Value Add select elements for global or local variables 
			in your CSV file, and/or value elements to specify values directly.
		 
	Update the Menu attribute of an element.
Fields to populate:
Select The element to be updated. Format: ID.semantic tag. The 
			ID has previously been assigned either in a CreateTree command or in a SelectTree 
			command, and the semantic tag is that of the element to update.
		Menu Value Add select elements for global or local variables 
			in your CSV file, and/or value elements to specify values directly.
		 
	Update the Inline Editing attribute of an element.
Fields to populate:
Select The element to be updated. Format: ID.semantic tag. The 
			ID has previously been assigned either in a CreateTree command or in a SelectTree 
			command, and the semantic tag is that of the element to update.
		Inline Value (Y/N) Add a select element to draw the value from 
			a global or local variable in your CSV file, or a value element to specify 
			the value directly.
		 
	This command is more general than the previous ones and allows you to update any metadata attribute of an element.
Fields to populate:
Select The element to be updated. Format: ID.semantic tag. The 
			ID has previously been assigned either in a CreateTree command or in a SelectTree 
			command, and the semantic tag is that of the element to update.
		Attribute Name of the attribute to be updated.
		Attribute Value Add select elements for global or local variables in 
			your CSV file, and/or value elements to specify values directly.
		
		 
	This command is more general than the previous ones and allows you to update any metadataWad attribute of an element.
Fields to populate:
Select The element to be updated. Format: ID.semantic tag. The 
			ID has previously been assigned either in a CreateTree command or in a SelectTree 
			command, and the semantic tag is that of the element to update.
		Attribute Name of the attribute to be updated.
		Attribute Value Add select elements for global or local variables in 
			your CSV file, and/or value elements to specify values directly.